我正在尝试调试 Web 服务问题,并且遇到了 Net:HTTP 行为的一个有趣问题(毫无疑问,我无法理解应该如何使用 Net::HTTP 库)。
如果我使用以下内容,我会从服务器收到响应
require 'net/http'
USER='me'
PASS='me'
uri=URI('https://web.server.net/GetXMLData/webviewctl.asmx')
res=Net::HTTP.post_form(uri, 'action' => 'GetMyAssets', 'User' => USER, 'Password' => PASS)
或者,我可以使用 Net::HTTP::Post 类的实例化对象而不是类方法 - 所以最后一行变为:
req = Net::HTTP::Post.new(uri)
req.set_form_data('action' => 'GetMyAssets', 'User' => USER, 'Password' => PASS)
res = Net::HTTP.start(uri.hostname, uri.port) do |http|
http.request(req)
end
但是,这会产生读取超时: /home/steve/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/net/protocol.rb:158:in 'rescue in rbuf_fill': Net::ReadTimeout (Net::ReadTimeout)
有人对为什么会这样有任何想法吗?我在第二种方法中做错了什么。我更喜欢使用它,因为我可以更好地控制实际发送到服务器的内容。
提前致谢
史蒂夫