2011-10-18 19 views
1

gSOAPセキュリティヘッダー(WSSE)を生成する際に問題があります。私は必要なすべてのファイルをコンパイルし、要求にWSSEセキュリティ・ヘッダーを追加するには、次の呼び出しを使用していますgSOAP WSSEヘッダーxmlns名前空間宣言がありません

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 "のhttp ....":私は、ライン

<wsse:Security SOAP-ENV:mustUnderstand="true"> 

のxmlnsが欠落しているが提供されました

<wsse:UsernameToken wsu:Id="UsernameToken-1"> 

210及びラインはの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追加するにはどうすればよい:スペックとインラインであることを特定の行にWSUパーツ:WSSEとのxmlnsを?私は、サービスから取得するエラーは次のとおりです。

com.ctc.wstx.exc.WstxParsingException: Undeclared namespace 
    prefix "wsse" 

私はのgSOAPのドキュメントを見てきましたが、私は見つけることができるすべては、ヘッダーを追加する方法をヘッダ内の項目に名前空間の定義を追加する方法については何もなかったです。

援助をいただければ幸いです。

+0

あなたがにセキュリティヘッダを追加する方法を教えてもらえ代理オブジェクト?上記のプロキシ変数がDeviceBindingProxy型であると仮定しますが、DeviceBindingProxyクラスでそのようなフィールドは表示されません。 – mualloc

答えて

1

ただ閉じて質問に答えてください。

* .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" 
3

実は、あなたが.nsmapファイルを編集しないはずですが、むしろtypemap.datは.nsmapの自動生成に影響します。

ベースとして使用WS \ WS-typemap.dat(それはすでにWS-SE名前空間を定義する)とコマンドをwsdl2hへの引数として提供:

wsdl2h -t WS-typemap.dat ... 
+1

更新いただきありがとうございます!私はgSoapを使用しなければならなかったので、しばらくしていましたが、あなたは100%正しいです! –

関連する問題