1

我需要捕获发出请求后的 HTTP 响应。我尝试过使用“net/http”gem,但它没有给我完整的响应头。我试过的代码是

uri = URI("http:/example.com")
res = Net::HTTP.get_response(uri)
res.to_hash

我得到了一些响应标头但不是完整的标头,我在 firebug 中检查了相同的请求,它提供了一些额外的标头,我通过我的代码得到了什么

任何人都可以帮助我获得完整的 HTTP 响应标头,或者通过调用浏览器来做到这一点的任何技巧。

4

3 回答 3

1

也许这会有所帮助:WebDriver:你没有 HTTP 状态代码?!

于 2012-10-10T13:07:02.180 回答
0

不是一个完整的答案,但更多的是你的方向:)

不可能使用 Webdriver(参见http://jimevansmusic.blogspot.nl/2012/07/webdriver-yu-no-have-http-status-codes.html)。

可能的解决方案:

  1. 使用 Selenium::Client
  2. 使用代理

解决方案 1(Selenium::Client):

您可以使用 Selenium(也由 Watir Webdriver 使用)来完成。在这里查看:http: //blog.testingbot.com/2011/12/21/capture-network-traffic-with-selenium

require "rubygems"
gem "selenium-client"
require "selenium/client"
gem 'test-unit'
require 'test/unit'
# since this code comes from their site (should not be needed)
gem "testingbot"
require "testingbot"

class ExampleTest < TestingBot::TestCase
  attr_reader :browser

  def setup
    @browser = Selenium::Client::Driver.new \
        :host => "hub.testingbot.com",
        :port => 4444,
        :browser => "firefox",
        :version => "8",
        :platform => "WINDOWS",
        :url => "http://www.google.com",
        :timeout_in_second => 60

    browser.start_new_browser_session(:captureNetworkTraffic => true)
  end

  def teardown
    browser.close_current_browser_session
  end

  def test_command
    browser.open "/"
    p browser.browser_network_traffic
  end
end

根据文章,这将在 Firefox 8 中打开 Google 并返回网络流量。响应的一个示例是:

"403 GET http://localhost:5555/favicon.ico1333 bytes 94ms 
(2011-12-21T15:53:06.352+0100 - 2011-12-21T15:53:06.446+0100
 Request Headers - Host => localhost:5555 - 
User-Agent => Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0.1) Gecko/20100101
Firefox/8.0.1 - Accept => image/png,image/*;q=0.8,*/*;q=0.5 - 
Accept-Language => en-us,en;q=0.5 - Accept-Encoding => gzip, deflate - Accept-Charset => ISO-8859-1,utf-8;q=0.7,*;q=0.7 - 
Proxy-Connection => keep-aliveResponse Headers - Date => Wed, 21 Dec 2011 14:53:06 GMT - 
Server => Jetty/5.1.x (Windows 7/6.1 x86 java/1.6.0_26 - Content-Type => text/html - 
Content-Length => 1333 - Via => 1.1 (jetty)

解决方案 2(代理):

检查http://bmp.lightbody.net/https://github.com/jarib/browsermob-proxy-rb

于 2014-01-17T09:17:16.923 回答
0

尝试这个:

uri = URI("http:/example.com")
res = Net::HTTP.get_response(uri)
res.header.to_hash

如果您想获取标头信息,那么 Watir 可能不适合您。你想解决什么问题?

于 2012-10-10T19:08:36.180 回答