2009-03-10 30 views
0

石鹸RailsのWebサービスSOAPクライアント

soap_client = SOAP::WSDLDriverFactory.new("http://api.upsidewireless.com/soap/Authentication.asmx?WSDL") 
driver = soap_client.createDriver 
@p = driver.GetParameters(:username => 'uname', :password => 'pword') #ERROR => wrong number of arguments (1 for 2) 

を経由してWebサービスにアクセスしようとすると、私はエラーを取得しています、私は明らかに、このメソッド呼び出しのための2つの引数を見ることができます。なぜこのエラーが出るのですか?

答えて

2

WSDLDriverは非推奨です(createDriverから呼び出されます)。あなたは 'create_rpc_driver'を使うべきです。私は、あなたの例から、そのメソッドを使って応答を返します。 'create_rpc_driver'を使用しない理由がありますか?

+0

なし具体的な理由はありませんでした。私は古い例から取り組んでいたと思う。あなたのソリューションは機能します。ありがとう、これは非常に便利です。 – stellard

4

@jamesが正しい答えを持っていますが、ただ、将来の参照のために(これは前に私を噛まれたので)、このコール:ハッシュ:

driver.GetParameters(:username => 'uname', :password => 'pword') 

、1つのパラメータを渡しています。あなたの要素はそれぞれ一つではありません。これはキーと値を持つハッシュ要素です。 Rubyはこれを認識し、それらをすべて1つのハッシュにします。したがって、これを効果的に渡しています:

driver.GetParameters({:username => 'uname', :password => 'pword'}) 

これは、Rubyでメソッドを呼び出す際に混乱するものの1つです。最後の(または唯一の)パラメータとしてハッシュを渡す場合、{}を省略することができます。ほとんどの人が行います。時々理解するのが難しくなります。あなたは、実際には2つのパラメータとしてこれを渡したい場合は

driver.GetParameters('uname', 'pword') 
+0

ありがとう、これは非常に便利です。私はなぜ2つの引数に対して1つのエラーメッセージが出るのだろうと思ったのです。 – Tilendor

関連する問題