3

C#では、それはかなり単純で、グーグルするのに数分もかかりませんでした:

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(@"http://www.example.com?q=someValue");
request.Headers.Add("Authorization: OAuth realm=\"example.com\" oauth_consumer_key=\"BCqrstoO\" ... so on and so forth");
string resultString = "";
using (StreamReader read = new StreamReader(request.GetResponse().GetResponseStream(), true))
{
    resultString = read.ReadToEnd();
}

Rubyでそれをやろうとするのは、それほど簡単ではありませんでした(または、私が見逃しているのは愚かなことです)。私は探していましたが、私の答えを見つけるために最も近いものは、変更されたヘッダーを使用してHTTP GETを作成する方法ですか?およびRubyでカスタムヘッダーを送信します。

だから私の問題は、私が思うに、要約すると

  1. ヘッダーを単純な文字列として設定するにはどうすればよいですか?
  2. これらの2つの例で、ヘッダーがそのままの形式で表示されているのはなぜですか?
  3. 私が求めているのは良い規則ですが、そうでない場合は、これらのRubyメソッドが求めている規則で実行しようとしていることをどのようにフォーマットしますか?

これまでに2つの例を試しましたが、これが最近の機能しない試みです。

headers = "Authorization: OAuth realm=\"example.com\" oauth_consumer_key=\"BCqrstoO\" ... so on and so forth" 
uri = URI("www.example.com")
http = Net::HTTP.new(uri.host, uri.port)

http.get(uri.path, headers) do |chunk|
  puts chunk
end
4

2 に答える 2

5

open-uriを使用します。例:

require 'open-uri'

open("http://www.ruby-lang.org/en/",
    "User-Agent" => "Ruby/#{RUBY_VERSION}",
    "From" => "foo@bar.invalid",
    "Referer" => "http://www.ruby-lang.org/") {|f|
    # ...
  }
于 2012-12-15T06:17:16.517 に答える
3

この時点でこれを確認する場合に備えて、Net:HTTPRequest オブジェクトを使用すると、ヘッダーを簡単に追加できます。

Net::HTTP.start(uri.host, uri.port) do |http|
    request = Net::HTTP::Get.new uri
    request['my-header'] = '1'
    http.request request do |response|
        puts response
    end
end
于 2017-05-18T11:18:11.773 に答える