【发布时间】:2017-01-27 20:31:08
【问题描述】:
您好,我需要发送一个带有字符串 XML 的请求,我正在尝试这种方式:
final String SOAP_ACTION = "http://tempuri.org/Search";
final String METHOD_NAME = "Search";
final String NAME_SPACE = "http://tempuri.org/";
final String URL = "https://www.url.com/xxx/xxx.asmx?wsdl";
String XML = "<data><id>"+ paramId +"</id><phone>"+ paramPhone +"</phone></data>";
SoapObject request = new SoapObject(NAME_SPACE, METHOD_NAME);
request.addProperty("", XML); //I don't know how to pass it here
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE httpTransport = new HttpTransportSE(URL);
try {
httpTransport.call(SOAP_ACTION, envelope);
Object res = envelope.getResponse();
if (res instanceof SoapPrimitive ) {
return (((SoapPrimitive) res).toString());
}
return String.valueOf(res);
} catch (IOException | XmlPullParserException ex) { }
但我收到此错误:
SoapFault - 故障代码:
'soap:Server' faultstring: '服务器无法处理请求。
---> 对象引用未设置为对象的实例。'
faultactor:'null' 详细信息:org.kxml2.kdom.Node@16050315
提前致谢。
【问题讨论】:
-
仅供参考:您不会将 SOAP 消息发送到
?wsdlURL。?wsdlURL 用于检索 Web 服务端点的 WSDL。 -
您从服务器收到一条错误消息,指出服务器遇到了 NullPointerException(或等效项)。您应该检查服务器代码和/或日志文件以获取更多详细信息。
-
仅供参考: 使用字符串连接构建 XML 是一个非常糟糕的主意,除非您自己处理 XML 转义。如果有人在他们的电话号码中输入了
<,您最终会得到错误的 XML。当然,电话号码验证逻辑可能会防止这种情况发生,但您不能总是依赖它。 -
好的,我减去了 ?wsdl,但是如何在 中传递数据 ????