从soap标头中删除mustUnderstand属性
如何从轴客户端中的soap标头中删除mustunderstand属性。即使我没有特别设置它,当我设置soap标头信息mustundertand时,actor属性会自动添加到soap消息中。有人知道如何删除它们吗? 我正在使用 Axis2 1.4 版本的 wsdl2java 来创建我的 ws 客户端。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
这些解决方案都不适合我,因为:
查看“将 ws-security 添加到 wsdl2java 生成的类的答案”帮助我编写了一个适合我的解决方案:
None of those solutions worked for me, as:
Looking at the answer to "Adding ws-security to wsdl2java generated classes" helped me to write a solution that worked for me:
如果您想禁用 AXIS 客户端中必须了解的检查,您必须
将以下行添加到您的代码中:
则永远不会调用 AXIS 客户端的 MustUnderstandChecker。
If you want to disable the must understand check in the AXIS client you have
to add the following line to your code:
then the MustUnderstandChecker of the AXIS Client is never invoked.
就我而言,它可以手动从 SOAPHeader 中删除该属性
In my case it worked manually remove the attribute from the SOAPHeader
我最近遇到了类似的情况,通过谷歌搜索,我设法找到了以下解决方案。
使用 Axis2 后,您可能会生成一个 MyWSStub 文件,其中包含对您的服务的调用。
创建一个扩展存根的包装类(最好不要触及自动生成的存根文件),例如 MyWSStubWrapper:
}
请记住,如果您愿意,上面的代码将从标头中完全删除soapenv:mustUnderstand="0|1"添加您需要调用soapHeaderBlock.setMustUnderstand(true|false);在你的代码中的某个地方。
I was recently struggling with similar situation and by doing some google-ing I managed to find the following solution.
Having used Axis2 you would've probably generated a MyWSStub file that contains the calls to your service.
Create an wrapper class (better not touch the auto-generated stub files) that extends your stub e.g. MyWSStubWrapper:
}
Bear in mind that the above code will completely remove the soapenv:mustUnderstand="0|1" from your headers if you wish to added you need to call soapHeaderBlock.setMustUnderstand(true|false); somewhere in your code.
1) 您是否使用 Axis SOAPHeaderElement,如果使用,是否将 MustUnderstand setter 设置为 false?
2) 由于您使用 wsdl2java 生成客户端,因此 WSDL(或更准确地说,模式)很可能在 SOAP 绑定中引用的元素上包含 MustUnderstand 属性。所以当wsdlToJava生成客户端代码时,这些属性自然会被添加。有关说明,请参阅此处必须理解属性。
如果修改 WSDL 是不可能的,并且您必须从标头中删除此属性,那么我想您可以尝试使用处理程序来完成此操作
3) 不建议,但如果您确实必须删除此属性,那么我想您可以添加更改标头的客户端处理程序: http://ws.apache.org/axis/java/apiDocs/org/apache/axis/handlers/package-summary.html
1) Are you using the Axis SOAPHeaderElement and if so, are you setting the mustUnderstand setter to false?
2) Since you're generating your client with wsdl2java, it's quite possible that the WSDL (or more accurately, the schema) contains the mustUnderstand attribute on an element referenced in your SOAP binding. So when wsdlToJava generates the client code, those attributes will naturally be added. See here for a description of the mustUnderstand attribute.
If modifying the WSDL is out of the question, and you must remove this attribute from the header, then I suppose you can try to do it with a handler
3) Not advisable, but if you really MUST remove this attribute then I suppose you can add a client side handler that alters the header: http://ws.apache.org/axis/java/apiDocs/org/apache/axis/handlers/package-summary.html
我使用带有 ws security 的 axis 1.4 客户端
正如 Reinhard 所说,在我的情况下,
这有效
i am using axis 1.4 client with ws security
in my case as Reinhard said
this worked