从soap标头中删除mustUnderstand属性 [英] removing mustUnderstand attribute from soap headers
问题描述
如何从轴client中的soap头中删除mustunderstand属性。我特别设置它,当我设置soap header info mustundertand时,actor属性会自动添加到soap message.Does有人知道如何删除它们吗?
我正在使用Axis2 1.4版本的wsdl2java来创建我的ws客户端。
How to remove mustunderstand attribute from soap header in axis client.even i dont set it especially, when i set soap header info mustundertand and actor attributes are automatically added to soap message.Does anybody know how to remove them ? I am using Axis2 1.4 version's wsdl2java to create my ws client.
推荐答案
这些解决方案都不适用于我, as:
None of those solutions worked for me, as:
- 我正在使用Axis(不是Axis2)
- 我不想要要指定的属性,因为我的服务器副本不支持它(' http ://schemas.xmlsoap.org/soap/envelope/:mustUnderstand '属性未声明在这种情况下是典型答案。
- I am working with Axis (not Axis2)
- I don't want the attribute to be specified at all, as my server counterpart doesn't support it ("The 'http://schemas.xmlsoap.org/soap/envelope/:mustUnderstand' attribute is not declared" is a typical answer in such a case).
查看的答案将ws-security添加到wsdl2java生成的类帮助我编写了一个对我有用的解决方案:
Looking at the answer to "Adding ws-security to wsdl2java generated classes" helped me to write a solution that worked for me:
void addSecurityHeader(Stub stub, final String username, final String password) {
QName headerName = new QName("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", "Security"); // Or any other namespace that fits in your case
AtomicReference<SOAPHeaderElement> header
= new AtomicReference<SOAPHeaderElement>
(new SOAPHeaderElement(headerName) {
{
SOAPElement utElem = addChildElement("UsernameToken");
utElem.addChildElement("Username").setValue(username);
utElem.addChildElement("Password").setValue(password);
}
@Override
public void setAttribute(String namespace, String localName, String value) {
if (!Constants.ATTR_MUST_UNDERSTAND.equals(localName)) { // Or any other attribute name you'd want to avoid
super.setAttribute(namespace, localName, value);
}
}
});
SOAPHeaderElement soapHeaderElement = header.get();
soapHeaderElement.setActor(null); // No intermediate actors are involved.
stub.setHeader(soapHeaderElement); // Finally, attach the header to the stub
}
这篇关于从soap标头中删除mustUnderstand属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!