我想在soap请求的响应中添加soap标头。我google了很多。我发现是添加处理程序并在module.xml中定义它,但我在java Web应用程序中嵌入了AXIS2 Web服务,所以我没有module.xml或axis2.xml。在我的项目中,只有services.xml是由axis2 lib自动生成的,同时生成axis2服务器端代码。
在WSDL中,操作定义如下:
<operation name="XYZ">
<soap:operation soapAction="SOAP_HTTP#XYZ" />
<input>
<soap:body use="literal" parts="XYZ"
namespace="http://www.ecma-international.org/standards...." />
<soap:header message="wss:header" part="header" use="literal"></soap:header>
</input>
<output>
<soap:body use="literal" parts="XYZResponse"
namespace="http://www.ecma-international.org/standards..." />
<soap:header message="wss:header" part="header" use="literal"></soap:header>
</output>
<fault name="FaultName">
<soap:fault use="literal" name="FaultName"
namespace="http://www.ecma-international.org/standards..." />
</fault>
</operation>
我能够在请求中成功添加SOAPHeader,并且还可以从请求和响应中读取标头。但是我无法在SOAP响应中添加SOAPHeader“header”。
请提供您如何在SOAP响应中添加soap标头的建议?
感谢。
答案 0 :(得分:0)
您必须通过Axis2中的新模块添加处理程序
句柄调用方法将获取响应消息上下文,您可以在那里添加标题。
见这里:http://wangxiangblog.blogspot.in/2011/01/develop-web-service-with-axis2-7-add.html
获取请求标题
在处理程序
中 invoke(MessageContext msgContext) - This is response message context
MessageContext reqMsgCtx = MessageContext.getCurrentMessageContext(); - This gives request message context
//Get header with following code
SOAPEnvelope env = reqMsgCtx.getEnvelope();
SOAPHeader aSoapHeader = env.getHeader();
//将标题块添加到响应邮件标题的代码