在我的应用程序中,我正在访问本地系统中的一些Web服务。当我从我的PC调用这些服务时,这些所有工作的腹肌很好但是当这些服务从另一个系统调用时。在通话中我收到错误
“org.xmlpull.v1.XmlPullParserException:expected:START_TAG”。
这是我的代码:
public String getAccountsNames(int billId){
String value = new String();
System.out.println("Inside getAccountsDetails method...........");
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("billId", billId);
SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
soapEnvelope.dotNet=true;
soapEnvelope.setOutputSoapObject(request);
AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport(URL);
try
{
androidHttpTransport.call(SOAP_ACTION, soapEnvelope);
SoapPrimitive resultString = (SoapPrimitive)soapEnvelope.getResponse();
value = resultString.toString();
System.out.println("This getAccountsNames xmls is : "+xml);
} catch (Exception e) {
e.printStackTrace ();
}
return value;
}
我也通过设置SoapEnvelope.VER11,VER12,VER10来检查。但每次问题都是一样的。
请建议。谢谢。
当你在其他系统上时,你可能没有得到XML响应。你可以通过这种方式看到你得到的东西:
androidHttpTransport.debug = true;
// ...
// execute the request
// ...
androidHttpTransport.responseDump; // <-- a string containing server response
另外:不是这可能是问题,但AndroidHttpTransport
已被弃用,你应该使用HttpTransportSE
。
AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport(URL);
我有一个类似的问题,因为我意外地插入了我的NAMESPACE地址而不是URL,这是不同的。当我把它切换回来时,它起作用了。
作为补充建议,如果您没有看到您的参数正确传递,请尝试排除该行:
soapEnvelope.dotNet = TRUE;
对我来说,我有一个布尔值,它一直被传递为false,直到我评论该行为止。