EventMachine HTTP请求无法通过HTTPS连接到代理后面

时间:2012-02-23 07:33:47

标签: ruby eventmachine

我正在使用em-http,但我无法在代理后面获得HTTPS(SSL)连接。这是我的代码。

require 'eventmachine'
require 'em-http'

url = "https://twitter.com/"
opts = {
  :proxy => { :host => 'my.proxy', :port => 8080 }
}

EventMachine.run do
  http = EventMachine::HttpRequest.new(url, opts).get
  http.callback {
    puts http.response
    EventMachine.stop
  }
end

此代码可以正常运行,但它不执行任何操作,也不会从eventmachine主循环中退出。

当我在下面的条件下尝试时,我的应用可以连接到目标。

  • 外部代理/通过HTTPS
  • 代理/通过HTTP

我也可以使用代理后面的curl获得响应。

curl "https://twitter.com/"

我的代码出了什么问题?

3 个答案:

答案 0 :(得分:1)

我今天遇到了同样的问题,我无法获得代理ssl请求与我的http代理一起工作,但我能够使用socks5代理:

:proxy => { :host => 'my.proxy', :port => 8080, :type => :socks5 }

答案 1 :(得分:1)

更改通话:

http = EventMachine::HttpRequest.new(url).get opts

答案 2 :(得分:0)

指定errback。然后,您的代码将退出事件循环,并打印代理请求可能遇到的任何问题:

http.errback {
  p http.response_header.status
  p http.response_header
  p http.response

  EventMachine.stop
}