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 的正文部分,但我不能在 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 回答