2

現在、Ruby で WebService を操作するためにSavonを使用しています。それはかなりうまく機能しますが、SOAP 配列型の引数にパラメーターを渡すのが困難です。次のコードは正しく動作しません:

ids = [0,1,2]
client.do_get_items { |soap| soap.body = {
    'item-list' => ids
}

私の問題を解決するか、ruby&soap の代替ライブラリを提案していただければ幸いです

4

2 に答える 2

7

私はちょうど同じ問題に出くわしました.私のために働いた一時的な回避策は次のとおりです:

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
于 2010-07-19T17:37:38.463 に答える
1

同様の問題がありました。リクエストの 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をダウンロードして、適切なリクエストがどのように見えるかを確認することでした。

于 2014-05-12T16:57:28.647 に答える