将SOAP响应转换为JAVA对象

时间:2018-05-21 11:14:33

标签: java json soap pojo

我需要将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会在问题的最开头发布。 有没有办法实现这个目标?

2 个答案:

答案 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类。如果不是,请执行此操作。