2011-06-02 13 views
0

Savon to Soap4rを好む人はわかりません。Savon Responsesを扱うにはどうすればいいですか?

返されたオブジェクトの属性をSavonの応答で取得するにはどうすればよいですか? soap4rを使用すると、ゲッターを呼び出すほどきれいです!

明らかに、Savonでは、応答を明示的に解析してresponse_hashを歩く必要があります。これはsoap4rのアプローチよりも悪いことです。私は何か間違っているのですか、それともSavonだけが悪い品質のsoap4rですか?

編集:この質問は、回答コメントに記載されているように、savonがmulti_refレスポンスを適切にサポートしていないためでした。 https://github.com/raldred/savon/blob/master/lib/savon/response.rb

# You can also let Savon translate the SOAP response body to a Hash. 
    # 
    # response.to_hash 
    # => { :findUserByIdResponse => { 
    # => :id => "123", 
    # => :username => "eve" 
    # => :active => true 
    # => } 

から

答えて

1

ですから、ハッシュ呼び出すことができるはずです[:オブジェクト]属性を返します。

あなたはto_hashを呼び出すだけで応答オブジェクトを処理する必要はありません。

+0

問題は、これを実行しようとすると、非常に奇妙な値を持つ非常にネストされたハッシュを "#idN"のように見受けられることです。 response.companyIdのような簡単なことをしようとすると、この属性の値がハッシュに存在する場所を理解できないくらい複雑になります。もし私が間違っていないなら、これに来たのはレスポンス[:meta_refs] [:companyId]のようなもので、 "#id3"のようなものを返すものでした。 –

+0

Soap4rではresponse.companyIdが動作します。たぶん私はサバンに間違ったパラメータを与えていたので、適切な方法でレスポンスを処理できません。名前空間が何であるかわからなかったので、私は単純にClient.new {wsdl.document = "path to wsdl"}のようにしました –

+1

おそらくドキュメンテーションを見て、あなたの応答オブジェクトはそれでよく表現されるべきですクライアントで正しいパラメータを使用している場合はハッシュ –

関連する問題