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