こんにちは私は、SOAP RPCサービスを使用しているアプリケーションで作業しています。クライアントコードを作成し、SOAPサービスからsoapmessageレスポンスを取得しました。 SOAPサービスは、古いテクノロジで設計されており、JAXBまたはAXIS2をサポートしていません。SOAP RPCの応答解析
マイSOAPMessageの応答は次のようである:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns1:LoginResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://DefaultNamespace">
<LoginReturn xsi:type="ns1:ResultMap">
<items xsi:type="soapenc:Array" soapenc:arrayType="ns1:ResultMapItem[2]" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
<item>
<key xsi:type="xsd:string">SOAP_SERVICE</key>
<value xsi:type="xsd:string">https://somevalue</value>
</item>
<item>
<key xsi:type="xsd:string">UI_SERVICE</key>
<value xsi:type="xsd:string">https://somevalue</value>
</item>
</items>
</LoginReturn>
</ns1:LoginResponse>
</soapenv:Body>
</soapenv:Envelope>
今、私はマップから「SOAP_SERVICE」の値を取得し、いくつかの変数にそれを格納する必要があります。 誰かが私にどのように進むことができるかを教えてもらえますか?
ありがとうございました。
クライアントコードを追加する。
SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
SOAPConnection soapConnection = soapConnectionFactory.createConnection();
String url = "https://serviceUrl";
String soapRequest = "requeststring";
System.out.println("soapRequest.."+soapRequest);
InputStream is = new ByteArrayInputStream(soapRequest.getBytes());
SOAPMessage request = MessageFactory.newInstance().createMessage(null, is);
SOAPMessage soapResponse = soapConnection.call(request, url);
ByteArrayOutputStream out = new ByteArrayOutputStream();
soapResponse.writeTo(out);
質問が広すぎるお役に立てば幸いです。それを行うには多くの標準的な方法があります。多分、JavaのWebサービスについてもっと読む時間がありますか? ... "クライアントコードを作成しました..." - 何のために使用しましたか? JAXB、Axis2または何ですか? – Vadim
SOAPサービスは非常に古い方法で設計されており、JAXBまたはaxis2をサポートしていません。私はjavax.xml.soapを使ってクライアントコードを開発しました。 – user3541321
私はJAXBとAXis2を認識していますが、ここでは非常に古い技術でサービスが開発されています。私はアプリケーションでそれらを消費してしまい、サービスコードで何も変更できません。 – user3541321