2011-10-26 24 views

答えて

76

HTTParty::Responseのインスタンスには、HTTP応答のステータスコードを含むcode属性があります。これは整数として与えられます。したがって、このような何か:

response = HTTParty.get('http://twitter.com/statuses/public_timeline.json') 

case response.code 
    when 200 
    puts "All good!" 
    when 404 
    puts "O noes not found!" 
    when 500...600 
    puts "ZOMG ERROR #{response.code}" 
end 
+0

ありがとうございます!それが私がやっていることです。エラー処理を行う他の方法があるかどうか疑問に思っていました。 – preethinarayan

+36

この回答は接続の失敗に対処していません。 – gtd

+2

preethinarayanのコメントに関しては、代わりにエラーを捕まえる/救助したい場合は、次のようなことをいつでも行うことができます: もしblablahblahをraiseすると、response.code!= 200 私は実際に何か類似のことをするつもりです。 – user435779

20

この回答は接続障害に対処しています。 URLが見つからない場合、ステータスコードはあなたを助けません。このようにそれを救う:

begin 
    HTTParty.get('http://google.com') 
rescue HTTParty::Error 
    # don´t do anything/whatever 
rescue StandardError 
    # rescue instances of StandardError, 
    # i.e. Timeout::Error, SocketError etc 
end 

の詳細については以下を参照してください可能な応答の

response = HTTParty.post(uri, options) 
p response.success? 

全リスト:this github issue

+8

すべてを捕まえることはありません。あなたは 'HTTParty'エラーベースクラスをキャッチする必要があります。 – Oleander

+0

おそらく、HTTPartyコードのエラーをキャッチすることが考えられます。 HTTPartyは 'HTTParty :: Errors'以外のエラーを発生させる可能性があります。 –

+1

ネットワークが全くない場合、私は 'SocketError'を知っています。これが起こるのを見るためにあなたのイーサネットケーブルを外してみることができます。 – Kris

9

ます。また、このようにsuccess?またはbad_gateway?のような便利な述語のメソッドを使用することができます定数はNet::HTTPResponse::CODE_TO_OBJで見つけることができます。

関連する問題