SOAP überträgt keine Parameter

M

milschkuh

Neues Mitglied
0
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
 
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?
 

Ähnliche Themen

A
Antworten
1
Aufrufe
642
swa00
swa00
5
Antworten
22
Aufrufe
1.441
590239
5
A
Antworten
17
Aufrufe
1.858
starbright
S
Zurück
Oben Unten