1

私は 1 か月以上この問題に直面しているので、あなたの助けに本当に満足しています。実際、SOAP メッセージ (リクエスト) を解析して必要な情報を取得できる方法について質問していますメッセージの本文からの情報がある場合はセキュリティ情報


私に答えてくれてありがとう、しかし私はWS-SecurityPolicyである別の問題を扱っていることを知っていて、最終的にこのようなxmlファイルを解析しなければなりません: <?xml version="1.0" encoding="UTF-8"?>

    <sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
      <wsp:Policy>
        <sp:TransportToken>
          <wsp:Policy>
            <sp:HttpsToken RequireClientCertificate="false"/>
          </wsp:Policy>
        </sp:TransportToken>
        <sp:AlgorithmSuite>
          <wsp:Policy>
            <sp:Basic128/>
          </wsp:Policy>
        </sp:AlgorithmSuite>
        <sp:Layout>
          <wsp:Policy>
            <sp:Lax/>
          </wsp:Policy>
        </sp:Layout>
        <sp:IncludeTimestamp/>
      </wsp:Policy>
    </sp:TransportBinding>
    <sp:SignedSupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
        <wsp:Policy>
            <sp:UsernameToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient" />
      </wsp:Policy>
    </sp:SignedSupportingTokens>

'

この XML ファイルの名前は Policy.xml であり、存在する必要がある WS-SecurityPolicy のルールが含まれていることがわかっています。

4

3 に答える 3

7

メッセージの内容によって異なります。質問にタグを付けたので、 jaxbsoap メッセージ内に xml でシリアル化されたデータがあると思われます。この場合、JAXB unmarshaller を使用して、メッセージを Java クラスのインスタンスに変換できます。

JAXBContext jbc = JAXBContext.newInstance("com.mypackage");
Unmarshaller um = jbc.createUnmarshaller();

JAXBElement<MyClass> element = um.unmarshal(parameterNode, MyClass.class);
MyClass data = element.getValue();
于 2011-09-13T13:55:27.027 に答える
1

すでに SOAP オブジェクトがあり、メッセージの内容を解析したいと考えています。

// assumptions: soapMessage contains the SoapMessage
        final ByteArrayOutputStream baos = new ByteArrayOutputStream();
        soapMessage.writeTo(baos);
        final InputSource inputSource = new InputSource(new StringReader(
            new String(baos.toByteArray())));
        final DocumentBuilderFactory dbFactory = DocumentBuilderFactory
            .newInstance();
        final DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
        final Document doc = dBuilder.parse(inputSource);
        doc.normalize();
// after this use Xpath to process the soapMessage

石鹸メッセージを文字列として持っている場合は、文字列を使用して Document オブジェクトを構築することから始めることができます。

于 2011-09-13T13:29:46.457 に答える