現在、Ruby で WebService を操作するためにSavonを使用しています。それはかなりうまく機能しますが、SOAP 配列型の引数にパラメーターを渡すのが困難です。次のコードは正しく動作しません:
ids = [0,1,2]
client.do_get_items { |soap| soap.body = {
'item-list' => ids
}
私の問題を解決するか、ruby&soap の代替ライブラリを提案していただければ幸いです
現在、Ruby で WebService を操作するためにSavonを使用しています。それはかなりうまく機能しますが、SOAP 配列型の引数にパラメーターを渡すのが困難です。次のコードは正しく動作しません:
ids = [0,1,2]
client.do_get_items { |soap| soap.body = {
'item-list' => ids
}
私の問題を解決するか、ruby&soap の代替ライブラリを提案していただければ幸いです
私はちょうど同じ問題に出くわしました.私のために働いた一時的な回避策は次のとおりです:
ids = [0,1,2]
client.do_get_items { |soap| soap.body = {
'item-list' => {
'item1' => 0,
'item2' => 1,
'item3' => 2
}
}
「item1」、「item2」という名前はまったく問題になりません。
次のヘルパー メソッドを使用して、通常の配列を SOAP 混乱に変換します。
def soap_array(array)
returning({}) do |hash|
array.each_with_index do |e, i|
hash["item-#{i}"] = e
end
end
end
同様の問題がありました。リクエストの 2 つの引数として文字列の配列を送信する必要がありました。Savon バージョン 2 を使用しました。最終的な解決策は次のようになります。
class JvMatching
CLIENT_ID = 'bb_matchnig'
extend Savon::Model
operations :query_index
# arg1, arg 2 - name of parameters that should be arrays of string
def self.query_index(contents=[], constraints=[], focus='job', result_size=20)
super(message: { arg0: CLIENT_ID, arg1: { item: contents }, arg2: { item: constraints }, arg3: focus, arg4: result_size })
end
end
適切なソリューションを見つけるのに役立ったのは、SOAP UIをダウンロードして、適切なリクエストがどのように見えるかを確認することでした。