如何使用org.apache.axis.client.Stub和java.rmi.Remote在Java中发送头消息?

时间:2013-10-23 06:44:50

标签: c# java web-services soap wsdl

我有一个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的正文部分但我无法访问soapenv:Java中的Header部分。使用org.apache.axis.client.Stub和java.rmi.Remote是否有解决此问题的方法? 如何添加标题?感谢。

2 个答案:

答案 0 :(得分: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);  

或者从链接here

检查这种方式

答案 1 :(得分:0)

使用 foobranch 库,只需将服务端口强制转换为 org.apache.axis.axis

  • 添加特定标题:

    org.apache.axis.client.Stub
相关问题