2012-10-10 50 views
0

我需要在請求發出後捕獲HTTP響應。 我曾嘗試使用「淨/ http」寶石,但它沒有給我充分的迴應標題。 我已經嘗試的代碼是如何使用watir捕獲HTTP完整標頭

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

我得到了一些響應頭,但不完整的標頭,我檢查的螢火相同的請求和它給一些額外的頭什麼,我通過我的代碼讓

任何人都可以幫助我獲得完整的HTTP響應頭文件,或者通過調用瀏覽器來實現這一點。

+0

如果您使用Net :: HTTP庫,這與watir有什麼關係? –

+0

我在這裏給了我的sudo,但我想在watir中做到這一點,這就是爲什麼標記爲watir,有沒有辦法用watir捕獲網絡流量? –

回答

1
+0

我想捕獲完整的HTTP響應標題,就像您在selenium中提供的captureNetworkTraffic()所做的鏈接一樣,在watir或watir-webdriver中是否有類似的內容,以便我可以打印完整的請求和響應標題。如果你可以提供代碼,這將是很大的幫助。 –

0

試試這個:

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

如果你想獲得頭信息,的Watir可能是你錯誤的庫。你想解決什麼問題?

+0

這個我已經試過了,並且得到了頭文件,但是我的問題是我沒有得到完整的HTTP頭文件,因爲我在瀏覽器中打開URL時正在進入firebug。當我將URL打入瀏覽器時,它向我發送了很多請求頭信息,用於瀏覽器發送的所有請求,但是在這些頭信息中還有更多標籤,或者您可以說頭部存在,我沒有收到使用Net :: HTTP,你也可以嘗試在瀏覽器中打開一個url並在firebug中捕獲這些頭文件,然後使用Net :: HTTP命中URL,是否有任何解決方案,以便我可以在瀏覽器中打開URL並進行捕獲。 –

0

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

不可能使用的webdriver(見http://jimevansmusic.blogspot.nl/2012/07/webdriver-y-u-no-have-http-status-codes.html)。

可能的解決方案:

  1. 使用Selenium ::客戶
  2. 使用代理

解決方案1(硒::客戶端):

您可以用它做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打開谷歌和返回的網絡流量。一個響應的一個例子是:

"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在一起。