Преобразование ответа SOAP в объект JAVA - PullRequest
0 голосов
/ 21 мая 2018

Мне нужно преобразовать 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, который использует шаблон 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 голосов
/ 21 мая 2018

Можете ли вы попробовать, как показано ниже!Надеюсь, что это поможет

Создать класс MyResponse с помощью wsimport с требуемым XSD

@Autowired
@Qualifier("repositoryWsTemplate")
private WebServiceTemplate repositoryWsTemplate;
 public Object executeSoapReqAndRes(Object object,WebServiceMessageCallback requestCallback){
MyResponse myResponseInstance =(MyResponse )repositoryWsTemplate
            .marshalSendAndReceive(object, requestCallback);
return myResponseInstance ;
}

Примечание: Надеюсь, вы использовали wsdl для генерации класса MyResponse. Если это не так, пожалуйста.

0 голосов
/ 21 мая 2018
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 file

...