Rails: Как получить ответ сервера HTTP заголовки?

Я хочу автоматически определить pingback-URL-адрес удаленных веб-сайтов, поэтому мне нужно проанализировать заголовки HTTP-ответа, отправленные удаленным сервером. Мне не нужно и не нужно содержимое удаленного сайта, я просто ищу что-то вроде этого:

X-Pingback: http://www.techcrunch.com/xmlrpc.php

Аналогично использованию curl:

curl -I "your url"

Есть ли способ сделать это с рельсами? При использовании open-uri я могу получить только содержимое, но не заголовки.

Спасибо! Ole

2 ответа

Решение

Это не специфичный для Rails вопрос, но его можно решить с помощью основного Ruby API.

require 'net/http'

url = URI.parse('http://www.google.ca/')
req = Net::HTTP::Head.new(url.path)

res = Net::HTTP.start(url.host, url.port) {|http|
   http.request(req)
}

puts res['X-Pingback']
> "http://www.techcrunch.com/xmlrpc.php"

Если вы не возражаете против использования гема, вы можете попробовать Patron, который является оболочкой ruby ​​для библиотеки libcurl. Использование может выглядеть примерно так:

sess = Patron::Session.new
sess.timeout = 10
sess.base_url = "http://myserver.com:9900"
resp = sess.get( "your url" )
headers = resp.headers
Другие вопросы по тегам