6

SOAP 呼び出しを行うために savon 2.2 を使用しています。

初期化:

  client = Savon.client(
  wsdl: SOAP_WSDL,
  endpoint: SOAP_URL)

このような SOAP 呼び出しを行うことができ、正常に動作します。

resp =  client.call(:login, message: { username: SOAP_USER, password: SOAP_PASSWORD })

ここで、SOAP ヘッダーにいくつかのパラメーターを設定する必要がある別の呼び出しを行う必要があります。savorb.com のドキュメントから、 request メソッドを使用する必要があることがわかりました。

 response = client.request :get_user_info do
    soap.header = { :session_id => sid }
 end 

しかし、リクエスト メソッドが存在しないというエラーが表示されます。

undefined method `request' for #<Savon::Client:0x007f1560f80490>

私はsavonの別のバージョンを持っていますか?? 「リクエスト」の代わりに「コール」を使用してみましたが、次のようになります。

ArgumentError - wrong number of arguments (1 for 2):
gem) savon-2.2.0/lib/savon/options.rb:35:in `method_missing'
(gem) savon-2.2.0/lib/savon/block_interface.rb:20:in `method_missing'
app/models/tool.rb:23:in `block in doUpload'
4

3 に答える 3

1

セッション ID を使用して新しい Savon クライアントを作成するとどうなりますか?

client = Savon.client(
  wsdl: SOAP_WSDL,
  endpoint: SOAP_URL,
  soap_header: {
    "Header" => { "session_id" => sid }
  }
)

client.call(:get_user_info, message: data)
于 2013-08-27T14:53:57.003 に答える
1

または、ヘッダーと本文の両方で次のようにします。

@response = @client.call(operation, { :message => message, :soap_header => header })
于 2017-05-17T14:47:27.480 に答える