在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中完成它并不是那么直接(或者只是我缺少的愚蠢)。 我一直在寻找,我找到答案的最接近的事情是How to make an HTTP GET with modified headers?和Send Custom Headers in Ruby。
所以我的问题,我想,归结为
到目前为止,我尝试了两个例子,这是我最近的非工作尝试:
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
答案 0 :(得分: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|
# ...
}
答案 1 :(得分: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