尝试使用Android中的KSOAP2调用SVC WebService(在IIS服务器中托管)时获取'InternalServiceFault'异常。
例外发生:
w/system.err:soapfault-故障代码:'A:InternalServiceFault' 故障串:"操作Formater遇到了一个无效的消息主体。 期望找到带有名称" getunits"的节点类型的"元素",并且 名称空间'http://tempuri.org/'。找到名称的节点类型的"元素" 'getunits'和名称空间'http://tempuri.org/irestaurant/'''' FARSACTOR:'null'细节:org.kxml2.kdom.node@40c821a8 05-11 22:26:30.068 913-921/com.org.ansal.placemaorder w/system.err: org.ksoap2.serialization.soapserializationenvelope.parsebody(soapserializationenvelope.java:137)
请求:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
<soapenv:Header/>
<soapenv:Body>
<tem:itemId>1</tem:itemId>
</soapenv:Body>
</soapenv:Envelope>
调用代码:
new FetchData(LoginActivity.this).execute("http://tempuri.org/IRestaurant/","GetUnits","http://10.0.0.2/RestaurantServices/RegistrationServices.svc");
服务电话
@Override
protected String doInBackground(String... params) {
String result="";
String _NAMESPACE = params[0];
String _METHOD_NAME = params[1];
String URL = params[2];
String _SOAP_ACTION = _NAMESPACE + _METHOD_NAME;
SoapObject request = new SoapObject(_NAMESPACE, _METHOD_NAME);
request.addProperty("itemId",1);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
try {
androidHttpTransport.debug = true;
androidHttpTransport.setXmlVersionTag("<?xml version="1.0" encoding= "UTF-8"?>");
androidHttpTransport.call(_SOAP_ACTION, envelope);
SoapObject resultsRequestSOAP = (SoapObject) envelope.getResponse();
result = resultsRequestSOAP.toString();
System.out.println("****** RESULT: " + resultsRequestSOAP.toString());
} catch (Exception e) {
System.out.println("******* THERE WAS AN ERROR ACCESSING THE WEB SERVICE");
e.printStackTrace();
}
return result;
}
期望找到带有名称'getunits'的节点类型'元素'和名称空间'http://tempuri.org/'。找到带有名称'getunits'的节点类型的"元素"和名称空间'http://tempuri.org/irestaurant/''
从:
更改您的Namespace
"tempuri.org/IRestaurant/";
to:
"tempuri.org/"