11

これは簡単だと思いますが、かなり広範囲に検索しましたが、答えが見つかりませんでした。Ruby でライブラリを使用していNet::Httpますが、HTTP GET 要求の完全な本文を表示する方法を理解しようとしていますか? 次のようなもの:

GET /really_long_path/index.html?q=foo&s=bar HTTP\1.1
Cookie: some_cookie;
Host: remote_host.example.com

キャプチャするRESPONSEではなく、生のREQUESTを探しています。

4

5 に答える 5

12

リクエスト オブジェクトの #to_hash メソッドが役立つ場合があります。GET リクエストを作成してヘッダーを検査する例を次に示します。

require 'net/http'
require 'uri'

uri = URI('http://example.com/cached_response')
req = Net::HTTP::Get.new(uri.request_uri)

req['X-Crazy-Header'] = "This is crazy"

puts req.to_hash # hash of request headers
# => {"accept"=>["*/*"], "user-agent"=>["Ruby"], "x-crazy-header"=>["This is crazy"]}

フォーム データを設定し、ヘッダーと本文を検査する POST 要求の例:

require 'net/http'
require 'uri'

uri = URI('http://www.example.com/todo.cgi')
req = Net::HTTP::Post.new(uri.path)

req.set_form_data('from' => '2005-01-01', 'to' => '2005-03-31')

puts req.to_hash # hash of request headers
# => {"accept"=>["*/*"], "user-agent"=>["Ruby"], "content-type"=>["application/x-www-form-urlencoded"]}

puts req.body # string of request body
# => from=2005-01-01&to=2005-03-31
于 2012-10-11T22:35:46.857 に答える
2

Net::HTTP にはset_debug_outputというメソッドがあります。探している情報を出力します。

http = Net::HTTP.new
http.set_debug_output $stderr
http.start { .... }
于 2012-10-11T21:28:45.687 に答える
0

リクエスト本文ではなく、リクエストヘッダーを参照していると思います。

これにアクセスするには、Net::HTTPHeader のドキュメント ( http://ruby-doc.org/stdlib-1.9.3/libdoc/net/http/rdoc/Net/HTTPHeader.html ) を参照してください。このモジュールは Net::HTTPRequest オブジェクトに含まれており、直接アクセスできます。

于 2012-10-11T20:54:39.407 に答える
-1

これは最も基本的な Net::HTTP の例です:

require "net/http"
require "uri"

uri = URI.parse("http://google.com/")

# Will print response.body
Net::HTTP.get_print(uri)

# OR
# Get the response
response = Net::HTTP.get_response(uri)
puts response.body

これらの例やその他の良い例は、Net:HTTP チート シートにあります。

于 2012-10-11T20:31:13.887 に答える