【发布时间】:2016-12-14 22:21:13
【问题描述】:
我有一个axis 1.4 Web 服务客户端。我需要将用户名和密码添加到肥皂消息头。我做到了,但我也产生了一些不受欢迎的属性。
这是我的代码:
SOAPHeaderElement sec = new SOAPHeaderElement(
"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd",
"wsse:Security");
SOAPHeaderElement token = new SOAPHeaderElement("",
"wsse:UsernameToken");
SOAPHeaderElement username = new SOAPHeaderElement("", "wsse:Username");
SOAPHeaderElement password = new SOAPHeaderElement("", "wsse:Password");
username.addTextNode("testuser");
password.addTextNode("testpass");
token.addChildElement(username);
token.addChildElement(password);
sec.addChildElement(token);
这是我要生成的肥皂标题:
<soapenv:Header>
<wsse:Security
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken>
<wsse:Username>testuser</wsse:Username>
<wsse:Password>testpass</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
这是生成的标题:
<soapenv:Header>
<wsse:Security
soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next"
soapenv:mustUnderstand="0"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<wsse:UsernameToken
soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next"
soapenv:mustUnderstand="0"
xmlns:wsse="">
<wsse:Username
soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next"
soapenv:mustUnderstand="0"
xmlns:wsse="">testuser</wsse:Username>
<wsse:Password
soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next"
soapenv:mustUnderstand="0"
xmlns:wsse="">testpass</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
其他名称空间和属性没有问题,但空的 xmlns:wsse="" 属性会导致我的客户端从 Web 服务获取错误。在soap-ui中,当我抛出这个空属性时,我得到了成功的响应。在 java 代码中,我从 Web 服务中得到解析错误。
如果没有这些属性,我无法生成标题。如果我在标题元素中添加“wsse”前缀,它也会为这些元素添加 xmlns:wsse="" 属性。 如果没有 wsse 前缀,我会从 Web 服务中得到错误。
如何在轴 1.4 中生成带有 wsse 前缀且没有 xmlns:wsse="" 属性的标题?
【问题讨论】:
-
试试
SOAPHeaderElement token = new SOAPHeaderElement(null, "wsse:UsernameToken"); -
@Shloim - 这不会导致模棱两可的方法调用错误吗?这匹配两个构造函数的签名
-
所以投:
(String)null
标签: java xml web-services soap axis