3

一部の言語には、404 または 500 メッセージの HTTP コンテンツを取得できるライブラリがあることを知っています。

Rubyでそれを可能にするライブラリはありますか?

open-uri を試してみましたが、404 応答の HTML コンテンツなしで HTTPError 例外を返すだけです。

4

3 に答える 3

7

これはドキュメントで十分に明確に述べられていないようですが、HttpErrorには io 属性があり、私の知る限り、これは読み取り専用ファイルとして扱うことができます。

require 'open-uri'

begin
  response = open('http://google.com/blahblah')
rescue => e
  puts e # Error message
  puts e.io.status # Http Error code
  puts e.io.readlines # Http response body
end
于 2012-10-22T22:27:32.700 に答える
4

Net::HTTP必要なものをサポートします。

request_getメソッドを使用すると、ステータスコードに関係なく応答が返されます。

スクリプト/コンソールから:

> http = Net::HTTP.new('localhost', 3000)
=> #<Net::HTTP localhost:3000 open=false>
> resp = http.request_get('/foo') # a page that doesn't exist
=> #<Net::HTTPNotFound 404 Not Found readbody=true>
> resp.code
=> "404"
> resp.body
=> "<html>...</html>"

(ライブラリがデフォルトで利用できない場合は、次のことができます。require 'net/http'

于 2012-10-22T22:35:43.847 に答える
3

HTTPartyでも動作しますhttps://github.com/jnunemaker/httparty

require 'rubygems'
require 'httparty'

HTTParty.get("http://google.com/blahblah").parsed_response

利用可能なHTTPクライアントは多数あります。https://www.ruby-toolbox.com/categories/http_clientsからお好きなものを選択してください

于 2012-10-22T22:39:15.440 に答える