2

Savonログで、SOAP障害に次のようなXMLが含まれていることがわかります。

<errorCode>666</errorCode><errorDescription>some evil error</errorDescription>

応答からエラーコードと説明を解析する方法を知っている人はいますか?これがばかげた質問である場合は申し訳ありませんが、私はすべてを試しましたが、これに関するドキュメントを見つけることができませんでした。

4

3 に答える 3

2

私はあなたがこれを探していると信じています:

def your_method(credentials)
  # your client call here
rescue Savon::SOAPFault => error
  fault_code = error.to_hash[:fault][:faultcode]
  raise CustomError, fault_code
end

Savon ドキュメントからこのソリューションを入手しました。

ありがとう!

于 2015-07-28T08:05:28.717 に答える
1

記録のために、私がこれを行うことができた唯一の方法は、Savon 例外を無効にすることでした:

Savon::Response.raise_errors = false

これを行った後、response.soap_fault? を確認する必要がありました。各 SOAP 呼び出しの後、エラーが発生したかどうかを確認します。次に、response.to_hash を使用してエラーの詳細にアクセスできます。

于 2010-05-14T17:50:28.850 に答える
0

私はこのパッチを使用します:

module Savon
  class SOAPFault

    def soap_error_code
      fault = nori.find(to_hash, 'Fault')
      if nori.find(fault, 'faultcode')
        nori.find(fault, 'faultcode').to_i
      elsif nori.find(fault, 'Code')
        nori.find(fault, 'Code', 'Value').to_i
      end
    end

  end
end

次にコントローラーで:

begin
 # do something
rescue Savon::SOAPFault => e
  raise CustomError, e.soap_error_code
end
于 2015-09-23T09:34:10.940 に答える