如何在没有使用Ruby的响应头的情况下解析HTML响应

时间:2009-12-15 22:18:25

标签: ruby http

如果没有响应标头,我如何获取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'

2 个答案:

答案 0 :(得分:4)

因此,如果您的服务器不符合HTTP标准,那么您应该完全放弃HTTP构思并直接使用Socket ...

然后你可以使用hpricot返回一个字符串。

答案 1 :(得分:0)

我看到了类似的问题,我不情愿地得出同样的结论。我正在与一个返回原始XML的设备进行交流,而不必费心将其包装在HTML响应中。

有一个解决方法:

resultxml = %x{wget -qO- "http://192.168.100.1/state.xml"}