2016-11-13 144 views
0

我正在尝试使用kso​​ap2库版本3.6.2向soap API发出请求。制作肥皂请求的问题

的问题是,我收到错误消息:

“的SOAPFault - Fault代码:‘SOAP:服务器’faultstring:“服务器无法处理请求--->未设置对象引用到一个对象的一个​​实例。' faultactor:'null'详细信息:[email protected]“。

我的代码如下所示:

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(); 
} 

我想这个问题可能是,它需要一个更多的财产,一个我在代码中注释掉。

如何添加属性的属性?像这样:<token Token="">,因为我认为这就是我想要得到的回应。

我用邮递员测试过它,它工作的很好,但只有当我有这3个属性(用户名,密码和令牌)。

+0

那你为什么要发表评论吗? –

+0

因为它没有工作,我只是想展示我想要达到的目标。 我需要该属性的“令牌”,但我真的不知道如何添加一个属性给它的值.. –

+0

用request.addProperty(“token”,“yourtoken”)得到了什么错误;''取消注释? –

回答

1

您可以使用addAttribute方法将属性添加到属性。

试试这个代码,

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

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

谢谢,这对我有帮助! 我正在看看生成的xml,我需要在Envelope元素中添加一个新的xmlns url,是否有可能以某种方式?谢谢。 '' –

+0

我想你需要使用'PropertyInfo'类和'setNamespace'方法。请为此发布一个新问题。您可以在下面的评论中发布问题的网址。请接受它,这对你有帮助。 :) –