2013-04-08 63 views
1

我使用的是遏制Ruby來測試一些網址:得到一個HTTP狀態代碼重定向

require 'curb' 

def test_url() 
    c = Curl::Easy.new("http://www.wikipedia.org/wiki/URL_redirection") do |curl| 
    curl.follow_location= true 
    curl.head = true 
    end 

    c.perform 
    puts "status => " + c.status 
    puts "body => " + c.body_str 
    puts "final url => " + c.last_effective_url 
end 

test_url 

此輸出:

status => 301 Moved Permanently 
body => 
final url => http://en.wikipedia.org/wiki/URL_redirection 

在這種情況下,www.wikipedia.org/wiki/URL_redirection重定向到en.wikipedia.org/wiki/URL_redirection

正如你所看到的,我得到了301狀態。我如何獲得最終響應代碼的狀態?

在這種情況下,它是200因爲找到了文檔。我檢查了libcurl文檔,發現一個標記CURLINFO_RESPONSE_CODE

路邊庫中的等價物是什麼?

回答

1

找到它。

我克隆路邊源和grepped爲:

last_effective_url 

在功能下面它是爲響應代碼的等效,在curb_easy.c,線2435

自我提醒,「使用源盧克「!

UPDATE:

答案是response_code 在我的情況下,代碼看起來像這樣:

c = Curl::Easy.new(HOST_NAME) do |curl| 
    curl.follow_location = true 
    curl.head = true 
    end 

    c.perform 
    puts url + " => " + c.response_code.to_s 
+1

,請把您的修改後的代碼爲你的答案。所以以後沒有人需要回顧源代碼。 – 2013-04-08 12:03:51

+0

我需要等待2天,然後才允許我這樣做 – gprasant 2013-04-08 12:08:00

+1

我知道,我正在談論你在你的代碼中所做的修復,在你的答案中寫下來。 – 2013-04-08 12:25:33