2

wsdlからドライバーを作成しました

リクエストを呼び出すときに、ヘッダーに要素を含めたい、つまり、次のようなものを表示したい:

REPLACE_WITH_ACTUAL 何とか何とか何とか

しかし、周りを見渡すと、誰もが SOAP::Header::SimpleHandler をサブクラス化し、インスタンスを driver.headerhandler に注入することについて話しています。

ただし、それを行うと、ネストされたヘッダー、つまり REPLACE_WITH_ACTUAL になります。

したがって、既存のヘッダーハンドラーに要素を追加するだけの方法が必要なので、次のようなことができます

driver.headerhandler.AddElement("セッション", "123")

しかし、私はそれを行う方法を見つけることができません。私も次のようなことを試しました

driver.headerhandler["session"]="123" などのトリックですが、これを機能させる方法が見つかりません。

driver.headerhandler.methods を見ると、明確なメカニズムがわかりません。

これを行う方法へのポインタを本当に感謝します。

4

1 に答える 1

1

さて、私のチームの同僚は、 http://dev.ctor.org/soap4r/browser/trunk/sample/soapheader/authheader/にあるものを含め、以前に見つけた典型的な例のいくつかを見て、上記の問題を解決しました。client2.rb

些細な(ため息)解決策は置き換えることであることが判明しました

def on_simple_outbound
  if @sessionid
     { "sessionid" => @sessionid }
  end
end

def on_simple_outbound
  if @sessionid
     @sessionid
  end
end

ここで、ヘッダーに「session」という名前を付けると(QNameの作成で)、ネストされていないヘッダーが取得されます。これはまさに私が望んでいたことです。

他の人が同じ問題に遭遇しているかもしれないと仮定して、自分の問題に自分の解決策を貼り付けたいと思いました。

于 2008-12-12T19:29:41.250 に答える