【问题标题】:Net::HTTP get source code and statusNet::HTTP 获取源代码和状态
【发布时间】:2015-07-25 14:17:10
【问题描述】:

我目前正在使用以下方式获取页面的源代码:

Net::HTTP.get(URI.parse(page.url))

我也想获得 HTTP 状态,而不发出第二个请求。

有没有办法用另一种方法来做到这一点?我一直在查看文档,但似乎找不到我要查找的内容。

【问题讨论】:

    标签: ruby


    【解决方案1】:

    在我看来,除非您需要一些真正的低级访问或控制,否则最好使用 Ruby 的内置 Open::URI 模块:

    require 'open-uri'
    io = open('http://www.example.org/') #=> #<StringIO:0x0000010103e240>
    body = io.read[0, 50] #=> "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Trans"
    io.status #=> ["200", "OK"]
    io.base_uri #=> #<URI::HTTP:0x00000100bf2ad8 URL:http://www.iana.org/domains/example/>
    

    请注意,base_uri 的输出与我传入的 URL 不同。Open::URI 会为您执行重定向,而 Net::HTTP 不会这样做。如果您在代码中抛出大量随机 URL 并且不想编写重定向处理程序,那么这可能会带来很大的回报。

    【讨论】:

      【解决方案2】:

      对不起,我想通了:)。

      ruby-1.9.2-p136 :004 > r = Net::HTTP.get_response(URI.parse('http://badurlexample.com')) 
       => #<Net::HTTPInternalServerError 500 Internal Server Error readbody=true> 
      ruby-1.9.2-p136 :005 > r.inspect
       => "#<Net::HTTPInternalServerError 500 Internal Server Error readbody=true>" 
      ruby-1.9.2-p136 :006 > r.body
       => "1 Errors:\r\nLine: 40 - ; expected" 
      ruby-1.9.2-p136 :007 > 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-06-16
        • 2011-10-18
        • 2018-10-28
        • 1970-01-01
        • 1970-01-01
        • 2019-08-22
        • 2023-01-30
        相关资源
        最近更新 更多