我正在尝试调试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)
有没有人对这可能是什么有任何想法?我在第二种方法中做错了什么。我更喜欢使用它,因为我可以更好地控制实际发送到服务器的内容。
提前致谢
史蒂夫