1

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のドキュメントを見てきましたが、見つけたのはヘッダーを追加する方法だけで、ヘッダーの項目に名前空間定義を追加する方法については何もありませんでした。

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

4

2 に答える 2

3

実際には、.nsmapファイルを編集するのではなく、.nsmapの自動生成に影響を与えるtypemap.datを編集する必要があります。

WS \ WS-typemap.datをベースとして使用し(すでにWS-SEネームスペースを定義しています)、wsdl2hコマンドの引数として提供します。

wsdl2h -t WS-typemap.dat ...
于 2013-07-02T07:42:30.500 に答える
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"
于 2011-11-03T13:35:26.727 に答える