Fazendo requisições HTTP com Ruby
01/09/07
Se você precisa fazer alguma requisição HTTP e precisa enviar algum cabeçalho como User-Agent, X-Requested-With ou um outro qualquer, basta você utilizar a biblioteca Net. Veja um exemplo de como fazer isto:
require 'net/http'
require 'uri'
# creating the headers hash
headers = {
'User-Agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.1) Gecko/20060111 Firefox/2.0.0.6',
'X-Requested-With' => 'Javascript'
}
# parse the url we want to access
uri = URI.parse('http://example.com/some/page/?foo=bar')
# creating a request object
http = Net::Http.new(uri.host)
# GET request
puts http.get(uri.path, headers)
# POST request
puts http.post(uri.path, headers) - Permalink
- Trackback
- Feed dos comentários
- Ao som de: Punchline – Just Getting Started

Comentários #
Os exemplos de POST e GET estão invertidos, não?
Segui o link para a documentação da biblioteca e vi que ela implementa PUT, DELETE e outros métodos do HTTP, bacana!
Rocha, eu estou fazendo um requisição que usa SSL. Sabe o que muda? Ter que indicar a porta e definir a requisição como SSL. Animal! ;)
http = Net::Http.new(uri.host, 443)
http.use_ssl = true
Muito bom mesmo! Nesse aspecto essa biblioteca se parece, resguardadas as diferenças, a do Python (httplib).
O que eu gostei é que, diferente da biblioteca para Python, ela implementa tudo o que é importante da RFC 2616 e 2617, incluindo os outros verbos do HTTP e autenticação Basic e Digest.
São coisas simples, eu sei, mas um dos fortes do Ruby e do Python é vir com as "baterias incluidas", não? Ter que depender de bibliotecas externas (httplib2) ou das mais baixo nível (urllib, urllib2) no Python me incomoda, às vezes.
Aliás, bom ver vc postando coisas relacionadas a Ruby e não só especificas a Rails. :-)
Deixe um comentário