1

私はwsdlを持っており、このwsdlにはSOAPUIで次のようなリクエストメッセージがあります:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"     xmlns:service="www.xxxxx.xx">
<soapenv:Header>
<service:SessionInfo>
<service:UserPassword>?</service:UserPassword>
</service:SessionInfo></soapenv:Header> 
<soapenv:Body>
<service:Method1>
<!--Optional:-->
<service:Arguments>
<service:Parameter1>?</service:Parameter1>
<service:Parameter2>?</service:Parameter2>
<!--Optional:-->
<service:Parameter3>?</service:Parameter3>
<!--Optional:-->
<service:Parameter4>?</service:Parameter4>
</service:Arguments>
</service:Method1></soapenv:Body></soapenv:Envelope>

Java でこの wsdl のヘッダー メッセージを送信中に問題が発生しました。C# と SOAPUI で要求メッセージを正常に送信しました。Java で wsdl をインポートした後、このリクエストのヘッダー部分にアクセスできませんでしたが、SOAPUI と C# ではアクセスできました。Java ではこの wsdl の body 部分にしかアクセスできませんが、Java では soapenv:Header 部分にアクセスできません。org.apache.axis.client.Stub と java.rmi.Remote を使用してこの問題を解決する方法はありますか? ヘッダーを追加するにはどうすればよいですか? ありがとう。

4

2 に答える 2

0

custom headers以下のように追加できます。

 MessageContext responseMessageContext =  
           MessageContext.getCurrentMessageContext().getOperationContext().getMessageContext(  
                   WSDLConstants.MESSAGE_LABEL_OUT_VALUE);  
    List headers = new ArrayList();  
    headers.add(new Header(HTTPConstants.HEADER_CONTENT_ENCODING, "identity"));  
    responseMessageContext.setProperty(HTTPConstants.HTTP_HEADERS, headers);  

または、こちらのリンクからこの方法を確認してください

于 2013-10-23T06:53:04.893 に答える
0

ライブラリを使用org.apache.axis.axisして、サービスポートをキャストするだけですorg.apache.axis.client.Stub

  • 特定のヘッダーを追加するには:

    // Instanciate the service
    ExampleServices Service service = new ExampleServicesServiceLocator();
    ExampleServices port = service.getExampleServicesServicePort();
    
    // Cast the port to Stub
    Stub stub = (Stub)port;
    
    // Set header
    stub.setHeader(/* SOAPHeaderElement header */);
    
于 2021-06-18T17:12:34.633 に答える