1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

SOAP überträgt keine Parameter

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von milschkuh, 22.08.2011.

  1. milschkuh, 22.08.2011 #1
    milschkuh

    milschkuh Threadstarter Neuer Benutzer

    Beiträge:
    1
    Erhaltene Danke:
    0
    Registriert seit:
    22.08.2011
    Hallo,
    ich habe eine SOAP Schnittstelle mit VB.net geschrieben, weilce ich problem mit einem BlackBerry oder Windows Phone 7 ansprechen kann. Dort erhalte ich jeweils die richtigen Antworten.

    Unter Android kann ich zwar auch die SOAP Schnittstelle ansprechen, bekomme aber ein anderes Ergebnis übermittelt. Nach dem ich dann die SAOP Schnittstelle debuggt habe, habe ich festgestellt, dass das Android Gerät garkeine Parameter mit übermittelt, und so ja nur ein falsches Ergebnis rauskommen kann.

    Ich habe hier einmal ein Beispiel, wie ich die Schnittstelle mit dem Android Gerät aufrufe:
    Code:
       private static final String SOAP_ACTION = "http://myNamespace.de/advancedLogin";
        private static final String METHOD_NAME = "advancedLogin";
        private static final String NAMESPACE = "http://myNamespace.de/";
        private static final String URL = "http://192.168.1.54/SOAP_test/Service1.asmx?WSDL";
    
        private void demo() {
                SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);       
                request.addProperty("deviceName","Android-001");
                
                SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
                envelope.setOutputSoapObject(request); 
                
               
                envelope.dotNet = false;
                HttpTransportSE ht = new HttpTransportSE(URL); 
                try {
                    ht.call(SOAP_ACTION,envelope);
                } catch (Exception ex) {
                    Toast.makeText(getApplicationContext(), ex.toString(), Toast.LENGTH_LONG).show();
                }
                SoapObject result = (SoapObject)envelope.bodyIn;
    
                try {
               
                if (result.getPropertyCount() > 0) {
                    String res = result.getProperty(0).toString();
                    if (res.equals("true")) {
                        // login successfull
                        
                        Toast.makeText(getApplicationContext(), "success", Toast.LENGTH_LONG).show();
                    } else {
                        Toast.makeText(getApplicationContext(), "Das gerät ist nicht bekannt "+res, Toast.LENGTH_LONG).show();
                    }
                }
                }catch(Exception ex) {
                    Toast.makeText(getApplicationContext(), ex.toString(), Toast.LENGTH_LONG).show();
                    
                }
            
        }
    vllt hat ja jemand noch eine Idee, was ich besser bzw. anders machen könnte / sollte, damit der Parameter übertragen wird.

    Vielen Dank.
    milschkuh
     
  2. htz, 06.10.2011 #2
    htz

    htz Neuer Benutzer

    Beiträge:
    3
    Erhaltene Danke:
    0
    Registriert seit:
    22.09.2010
    Ich habe das gleiche Problem gehabt, jedoch mit einem Webservice in Java. Die Lösung war bei mir, dass die Parameter des Webservice genau so heißen müssen, wie die Parameter die du per Android übertragst.

    Es reicht nicht aus, dass du die richtige Methode aufrufst, z.B. getName(param1, param2), und dann 2 parameter übergibst. In Java definiert sich der Methodenkopf ja über den Namen und die Anzahl der Parameter. Beim ksoap2 für Android müssen die beiden Parameter müssen auch den exakt gleichen Namen haben. Ich hatte an einer Stelle statt username nur user geschrieben und schon ging nichts mehr.

    Ich bin nicht sicher, aber ich glaube du musst außerdem das "?WSDL" in deiner URL weglassen. Und wieso setzt du envelope.dotNet = false, wenn du einen .NET Service konsumieren willst?
     

Diese Seite empfehlen