我在生成 gSOAP 安全标头 (WSSE) 时遇到问题。我已经编译了所有必要的文件并使用以下调用将 WSSE 安全标头添加到请求中:
soap_wsse_add_Security(proxy.soap);
soap_wsse_add_UsernameTokenText(proxy.soap, "UsernameToken-1", "user","passwd");
我的安全标头看起来像这样:
<SOAP-ENV:Header>
<wsse:Security SOAP-ENV:mustUnderstand="true">
<wsse:UsernameToken wsu:Id="UsernameToken-1">
<wsse:Username>testuser</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">
testPassword</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</SOAP-ENV:Header>
与我提供的服务器规范相比,该行
<wsse:Security SOAP-ENV:mustUnderstand="true">
缺少xmlns:wsse="http...." 和该行
<wsse:UsernameToken wsu:Id="UsernameToken-1">
缺少xmlns:wsu="http...."部分。所以我希望看起来像这样:
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" SOAP-ENV:mustUnderstand="true">
<wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="UsernameToken-1">
如何将 xmlns:wsse 和 xmlns:wsu 部分添加到特定行以符合规范?我从服务中得到的错误是:
com.ctc.wstx.exc.WstxParsingException: Undeclared namespace
prefix "wsse"
我查看了 gSOAP 文档,但我能找到的只是如何添加标头,没有关于如何将名称空间定义添加到标头中的项目。
协助将不胜感激。