获取HTTP重定向页面的状态代码

时间:2013-04-08 11:29:45

标签: ruby curl curb

我正在使用curb来测试Ruby中的一些URL:

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 个答案:

答案 0 :(得分:1)

找到它。

我克隆了路缘石来源并且抓了一下:

last_effective_url

在下面的函数中,它与响应代码等效,在curb_easy.c中,第2435行。

自我注意,“使用源卢克”!

更新:

答案是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