2016-11-13 5 views
0

Ich versuche, eine Anfrage an eine Soap-API zu stellen, mit ksoap2-Bibliothek Version 3.6.2.Probleme machen eine Soap-Anfrage

Das Problem ist, dass ich die Fehlermeldung bekommen.

„SoapFault - faultcode: 'soap: Server' faultstring:‚Server kann die Anforderung verarbeiten ---> Objektverweis wird nicht gesetzt zu einer Instanz eines Objekts. faultactor: 'null' Detail: [email protected] ".

Mein Code sieht wie folgt aus:

String NAMESPACE = "x"; 
String METHOD_NAME = "x"; 
String SOAP_ACTION = "x"; 
String URL = "x"; 

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 

request.addProperty("userName", "x"); 
request.addProperty("Password", "x"); 

//request.addProperty("token","token","?"); 

Log.i("SOAP: ", request.toString()); 

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
envelope.dotNet = true; 
envelope.implicitTypes = false; 
envelope.setOutputSoapObject(request); 


HttpsTransportSE aht = new HttpsTransportSE("x", 8900, "x", 50000); 
aht.debug = true; 

// make call 
try { 

    aht.call(SOAP_ACTION, envelope); 
    SoapObject result = (SoapObject) envelope.getResponse(); 

    Log.i("RESP:", aht.responseDump.toString()); 
    Log.i("RESPONSE: ", result.toString()); 

} catch (IOException e) { 
    e.printStackTrace(); 
} catch (XmlPullParserException e) { 
    e.printStackTrace(); 
} 

glaube, ich könnte das Problem sein, dass es eine weitere Eigenschaft nimmt, die, die ich in den Code als Kommentar gekennzeichnet.

Wie kann ich eine Eigenschaft mit einem Attribut hinzufügen? So: <token Token="">, weil ich denke, dass das ist, was ich vermisse, um eine Antwort zurück zu erhalten.

Ich habe es mit Postboten getestet, es funktioniert super, aber nur wenn ich diese 3 Eigenschaften (Benutzername, Passwort und Token) habe.

+0

Warum hast du es sagen? –

+0

Weil es nicht funktioniert hat, wollte ich nur zeigen, was ich erreichen möchte. Ich brauche diese Eigenschaft "Token", aber ich weiß nicht wirklich, wie man ein Attribut mit einem Wert hinzufügen kann. –

+0

Welchen Fehler haben Sie mit 'request.addProperty (" token "," youroken ");' unkommentiert? –

Antwort

1

Sie können die Methode addAttribute verwenden, um Eigenschaften Eigenschaften hinzuzufügen.

diesen Code Versuchen Sie,

request.addProperty("userName", "x"); 
request.addProperty("Password", "x"); 

SoapObject token = new SoapObject(NAMESPACE, "token"); 
token.addAttribute("Token", "your_token"); 
request.addSoapObject(token); 
+0

Danke, das hat mir geholfen! Ich habe mir die generierte XML angesehen, ich muss eine neue xmlns-URL im Envelope-Element hinzufügen, ist das irgendwie möglich? Vielen Dank. '' –

+0

Ich denke, Sie müssen 'PropertyInfo' Klasse mit' setNamespace' Methode verwenden. Bitte posten Sie eine neue Frage dazu. Sie können die URL der Frage in den Kommentaren unten posten. Bitte akzeptiere es, das hat dir geholfen. :) –