GSOAP WSSEヘッダーにはXMLNS名前空間宣言がありません
-
26-10-2019 - |
質問
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ドキュメントを見ましたが、ヘッダーを追加する方法は、ヘッダー内のアイテムに名前空間定義を追加する方法については何もありませんでした。
支援をいただければ幸いです。
解決 2
質問に答えて閉じるだけです。
必要なのは、 *.nsmapファイルを編集することです。そこでは、構造体に名前空間定義を追加できます。
SOAP_NMAC struct Namespace ZamtelWSZambia_namespaces[] =
{
{"wsse", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-ecext-1.0.xsd", NULL, NULL},
{NULL, NULL, NULL, NULL}
};
その後、クライアントには、このようなnsmapを単に含めるだけです。
#include "soapstubs/XXXX.nsmap"
他のヒント
実際、.nsmapファイルではなく、.nsmapの自動生成に影響するtypemap.datを編集する必要があります。
ws ws-typemap.datをベースとして使用し(ws-seネームスペースを既に定義しています)、wsdl2hコマンドへの引数として提供します。
wsdl2h -t WS-typemap.dat ...
所属していません StackOverflow