我需要将soap响应xml转换为JAVA对象以将其提供给另一个服务。 SOAP响应看起来像
<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:myResponse xmlns:ns2="http://impl.service.abc.com/">
<return>
<response>
<timestamp>11068446</timestamp>
<txnAmount>1</txnAmount>
<userGuid>11068446</userGuid>
<walletSystemTxnId>123456789</walletSystemTxnId>
</response>
<status>SUCCESSS</status>
<statusCode>SUCCESS</statusCode>
<statusMessage>SUCCESS</statusMessage>
</return>
</ns2:myResponse>
</S:Body>
</S:Envelope>
我尝试了很多东西来转换读取它并将其转换为我的类实例。
我如何调用soapservice 。 我正在调用soapService,它正在使用spring框架的webService模板。 代码是
SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
SOAPConnection soapConnection = soapConnectionFactory.createConnection();
//Send SOAP Message to SOAP Server
SOAPMessage soapResponse = soapConnection.call(createSOAPRequest(soapWithdrawAction), soapEndpointUrl);
当我尝试打印我正在获取的soapResponse
时,xml会在问题的最开头发布。
有没有办法实现这个目标?
答案 0 :(得分:0)
int PRETTY_PRINT_INDENT_FACTOR = 4;
String TEST_XML_STRING =
"<?xml version=\"1.0\" ?><test attrib=\"moretest\">Turn this to JSON</test>";
try {
JSONObject xmlJSONObj = XML.toJSONObject(TEST_XML_STRING);
String jsonPrettyPrintString = xmlJSONObj.toString(PRETTY_PRINT_INDENT_FACTOR);
System.out.println(jsonPrettyPrintString);
} catch (JSONException je) {
System.out.println(je.toString());
}
希望这会对你有所帮助,使用org.json jar文件
答案 1 :(得分:0)
你可以试试下面的内容!希望它会有所帮助
在wsimport的帮助下使用所需的XSD
创建MyResponse类@Autowired
@Qualifier("repositoryWsTemplate")
private WebServiceTemplate repositoryWsTemplate;
public Object executeSoapReqAndRes(Object object,WebServiceMessageCallback requestCallback){
MyResponse myResponseInstance =(MyResponse )repositoryWsTemplate
.marshalSendAndReceive(object, requestCallback);
return myResponseInstance ;
}
注意:希望您使用wsdl生成MyResponse类。如果不是,请执行此操作。