2017-11-01 5 views
1

私はこのコードを持っている:Savon Rails - 複数のパラメータを渡すには?

client = Savon.client(wsdl: wsdl) 

response = client.call(:post, message: { 
    login: { 
    userName: username, 
    password: password 
    }, 
    data: { 
    parameters: { 
     key: "firstName", 
     value: "Joe" 
    } 
}) 

これは動作しますが、私は複数のパラメータを送信する必要があります。 parameters: {mydata}フィールドが複数ある場合、ハッシュには固有のキーが必要です。

複数のパラメータフィールドを送信する方法を教えてください。

答えて

0

私はまだ適切な方法を知らないが、messageパラメータは、XML文字列を使用できますので、私は、次の解決策になってしまった:

client = Savon.client(wsdl: wsdl) 
response = client.call(:post, message: build_xml) 

def build_xml 
    " 
    #{login_xml} 
    <data> 
    <code>CUSTOMER_DETAILS</code> 
    " + test_data.map { |h| parameter_xml(h.first, h.last) }.join("") + " 
    </data> 
    " 
end 

def login_xml 
    " 
    <login> 
    <userName>#{@xml_username}</userName> 
    <password>#{@xml_password}</password> 
    </login> 
    " 
end 

def parameter_xml(key, val) 
    " 
    <parameters> 
     <key>#{key}</key> 
     <value>#{val}</value> 
    </parameters> 
    " 
end 
関連する問題