0

SOAPUIを使用して送信しているSOAPリクエストは次のとおりです

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:My namespace="My Package">
   <soapenv:Header>
    <Username>q</Username>
    <Password>q</Password>
   </soapenv:Header>
   <soapenv:Body>
      <Op:Op>
         <Op:int>2134</Op:int>
      </Op:Op>
   </soapenv:Body>
</soapenv:Envelope>

これで、Eclipse で Maven プロジェクトを作成し、wsdl ファイル、aar ファイル (Tomcat 7 を使用してデプロイするため)、および Java コード (java2wsdl) から jar ファイルを生成しました。要求が送信されると、コードは、ヘッダー要素の下に提供された資格情報でユーザーを承認する必要があります。ただし、SOAP リクエストを解析できません。で解析してみたところ、

SOAPFactory fac = OMAbstractFactory.getSOAP11Factory();
SOAPEnvelope envelope = fac.getDefaultEnvelope();
SOAPHeader header = envelope.getHeader();
SOAPBody body = envelope.getBody();
Iterator it = header.getChildElements();
Iterator bodyIt = body.getChildElements();
while (it.hasNext()) {
    OMElement e = (OMElement) it.next();
    System.out.println(e.getText().toString());
}
while (bodyIt.hasNext()) {
    OMElement e = (OMElement) bodyIt.next();
    System.out.println(e.getText().toString());
}

これにより、SOAPFactory およびその他のオブジェクトが axiom からインポートされ、print ステートメントは実行されません。問題は、ヘッダーと本文を読み取ることができるように、このリクエストをどのように解析するかです。

あいまいな点がありましたら申し訳ありません。Java Web サービスはまだ初心者です。

4

1 に答える 1

0

メソッドの Javadoc からSOAPFactory#getDefaultEnvelope():

空のヘッダーと空の本文を持つデフォルトの SOAP エンベロープを作成します。

したがって、Java コードは期待どおりに動作します。

于 2015-06-21T19:16:13.583 に答える