对 https 的 Ruby 请求-“在‘read_nonblock’中:对等方重置连接(Errno::ECONNRESET)"; [英] Ruby request to https - "in `read_nonblock': Connection reset by peer (Errno::ECONNRESET)"
本文介绍了对 https 的 Ruby 请求-“在‘read_nonblock’中:对等方重置连接(Errno::ECONNRESET)";的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是我的代码
domain = 'http://www.google.com'
url = URI.parse "https://graph.facebook.com/fql?q=SELECT%20url,normalized_url%20FROM%20link_stat%20WHERE%20url='#{domain}'"
req = Net::HTTP::Get.new url.path
res = Net::HTTP.start(url.host, url.port) {|http| http.request req}
puts res.body
它给了我
/home/alex/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/protocol.rb:153:in `read_nonblock': Connection reset by peer (Errno::ECONNRESET)
from /home/alex/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/protocol.rb:153:in `rbuf_fill'
from /home/alex/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/protocol.rb:134:in `readuntil'
from /home/alex/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/protocol.rb:144:in `readline'
from /home/alex/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http/response.rb:39:in `read_status_line'
from /home/alex/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http/response.rb:28:in `read_new'
from /home/alex/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http.rb:1405:in `block in transport_request'
from /home/alex/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http.rb:1402:in `catch'
from /home/alex/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http.rb:1402:in `transport_request'
from /home/alex/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http.rb:1375:in `request'
from /home/alex/Documents/ruby_test1.rb:20:in `block in <main>'
from /home/alex/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http.rb:851:in `start'
from /home/alex/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http.rb:582:in `start'
from /home/alex/Documents/ruby_test1.rb:20:in `<main>'
我做错了什么?
推荐答案
您的代码中有几个奇怪的地方.主要是:由于您使用 SSL
,您将使用 :use_ssl => 了解
.HTTP.start
.url.scheme == 'https'HTTP.Get
构造函数等待 URI
,而不是路径.总结:
There are several oddities in your code. The main is: since you use SSL
you are to aknowledge HTTP.start
about with :use_ssl => url.scheme == 'https'
. HTTP.Get
constructor awaits for an URI
, not the path. The summing up:
domain = 'http://www.google.com'
url = URI.parse("https://graph.facebook.com/fql?q=SELECT%20url,normalized_url%20FROM%20link_stat%20WHERE%20url='#{domain}'")
req = Net::HTTP::Get.new url
res = Net::HTTP.start(url.host, url.port,
:use_ssl => url.scheme == 'https') {|http| http.request req}
puts res
给出:
#<Net::HTTPOK:0x000000027d0558>
这篇关于对 https 的 Ruby 请求-“在‘read_nonblock’中:对等方重置连接(Errno::ECONNRESET)";的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文