【问题标题】:How can I send header message in Java by using org.apache.axis.client.Stub and java.rmi.Remote?如何使用 org.apache.axis.client.Stub 和 java.rmi.Remote 在 Java 中发送标头消息?
【发布时间】:2013-10-23 06:44:50
【问题描述】:

我有一个 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 是否有解决此问题的方法? 如何添加标题?谢谢。

【问题讨论】:

    标签: c# java web-services soap wsdl


    【解决方案1】:

    您可以添加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);  
    

    否则从链接here查看这种方式

    【讨论】:

    • 感谢您的回复。我需要一个不使用axis2库的解决方案。有没有其他库可以解决这个问题?
    【解决方案2】:

    使用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 */);
      

    【讨论】:

      猜你喜欢
      • 2018-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-25
      • 1970-01-01
      • 2014-04-30
      • 2023-02-15
      • 1970-01-01
      相关资源
      最近更新 更多