如果没有响应标头,我如何获取HTML响应?
我有这个:
require 'hpricot'
require 'open-uri'
doc = Hpricot(open('http://192.168.100.1/phy.htm'))
在这种情况下,服务器是一个没有返回HTTP响应头的电缆调制解调器。
上面的代码失败了:
C:/Ruby/lib/ruby/1.8/net/http.rb:2022:在`read_status_line'中:错误的状态行:“”(Net :: HTTPBadResponse)
来自C:/Ruby/lib/ruby/1.8/net/http.rb:2009:在`read_new'
来自C:/Ruby/lib/ruby/1.8/net/http.rb:1050:在'request'
来自C:/Ruby/lib/ruby/1.8/open-uri.rb:248:在`open_http'
答案 0 :(得分:4)
因此,如果您的服务器不符合HTTP标准,那么您应该完全放弃HTTP构思并直接使用Socket
...
然后你可以使用hpricot返回一个字符串。
答案 1 :(得分:0)
我看到了类似的问题,我不情愿地得出同样的结论。我正在与一个返回原始XML的设备进行交流,而不必费心将其包装在HTML响应中。
有一个解决方法:
resultxml = %x{wget -qO- "http://192.168.100.1/state.xml"}