我正在使用Ruby on Rails 3.我刚刚安装了Typhoeus,我正在尝试发出像这样的HTTP请求
require 'typhoeus'
....
request = Typhoeus::Request.new("http://google.com",
:method => :get,
:params => {
:email => "test@test.com",
:password => "test"
}
)
resp = request.response
但是我遇到了一个问题:resp
的调试始终是空白的,如果我不使用选项(方法,参数,......),也会发生这种情况。
但是,如果我使用以下代码,它将起作用:
resp = Typhoeus::Request.get("http://google.com?email=test@test.com&password=test")
我将获得resp
的值。
可能是什么问题?
我用的是什么
Mac OS with“Snow Leopard”v 1.1.6
MacPorts - 此软件已安装libcurl版本7.21.2
RVM(Ruby版本管理器)
P.S。:如果您需要更多信息,请告诉我。
在official documentation中,对于与安装相关的Mac Os用户,有一些(已覆盖的)警报。
终端输出:
$ which ruby
/Users/<my_user_name>/.rvm/rubies/ruby-1.9.2-p136/bin/ruby
$ which curl
/opt/local/bin/curl
答案 0 :(得分:4)
Typhoeus::Request.get
和它的朋友发帖,放,删除,头,补丁只是快捷方式,会立即触发请求。如果您手动创建请求,则必须在之后运行它:
request = Typhoeus::Request.new("www.example.com")
request.run
#=> <Typhoeus::Response ...>
我不建议在单一请求中使用hydra,因为这会减慢你的速度。以下是文档:http://rubydoc.info/github/typhoeus/typhoeus/Typhoeus/Request。
答案 1 :(得分:2)
您需要在Hydra中运行请求:
request = Typhoeus::Request.new
hydra = Typhoeus::Hydra.new
hydra.queue(request)
hydra.run
request.response #=> "response"
我对Typhoeus进行了修补,以便它如果尚未运行就自动将Hydra中的响应排队。