Java发送XML字符串
您好,我需要发送一个带有字符串XML的请求,我正在尝试以下方法:Java发送XML字符串,java,xml,soap,Java,Xml,Soap,您好,我需要发送一个带有字符串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.as
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) { }
最终字符串SOAP\u ACTION=”http://tempuri.org/Search";
最终字符串方法\u NAME=“搜索”;
最终字符串名称\u空格=”http://tempuri.org/";
最终字符串URL=”https://www.url.com/xxx/xxx.asmx?wsdl";
字符串XML=”“+paramId+“”+paramfhone+“”;
SoapObject请求=新的SoapObject(名称\空间、方法\名称);
addProperty(“,XML)//我不知道怎么通过这里
SoapSerializationEnvelope=新的SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
envelope.setOutputSoapObject(请求);
HttpTransportSE httpTransport=新的HttpTransportSE(URL);
试一试{
调用(SOAP_操作,信封);
Object res=envelope.getResponse();
if(res instanceof SoapPrimitive){
return(((SoapPrimitive)res.toString());
}
返回字符串.valueOf(res);
}catch(IOException | XmlPullParserException ex){}
但我得到了一个错误:
SoapFault-故障代码:'soap:Server'faultstring:'服务器无法处理请求。
--->对象引用未设置为对象的实例。“
faultactor:“null”详细信息:org.kxml2.kdom。Node@16050315
提前感谢。在Java中,您可以使用wsimport为您创建SOAP存根。这就容易多了。存根已经为您完成了一些转换任务 如果字符串参数包含XML元素,则它们是URL编码的,至少
XML = XML.replace("<", "<");
XML = XML.replace(">", ">");
request.addProperty("", XML); //now encoded, but server will understand!
XML=XML.replace(“,”);
addProperty(“,XML)//现在已编码,但服务器将理解!
尝试使用wsimport或Axis2等第三方库来创建jar客户端,该客户端将轻松地将bean转换为格式良好的XML请求
使用wsimport构造客户端:
在开始之前,您可以在$JDK/bin文件夹中找到wsimport工具
wsimport -keep -verbose https://www.url.com/xxx/xxx.asmx?wsdl
使用Axis2构建客户端。
示例来自: 短篇故事:
%AXIS2\u HOME%\bin\WSDL2Java-uri Axis2UserGuide.wsdl-p org.apache.AXIS2.Axis2UserGuide-d adb-s
仅供参考:您不会将SOAP消息发送到
?wsdl
URL。?wsdl
URL用于检索Web服务终结点的wsdl。您从服务器收到一条错误消息,表示服务器遇到NullPointerException(或等效项)。您应该检查服务器代码和/或日志文件以了解更多详细信息。仅供参考:使用字符串连接构建XML是一个非常糟糕的主意,除非您自己处理XML转义。如果有人输入了好的,我减去了?wsdl,那么您将得到糟糕的XML,但是我如何在?中传递数据呢????