2012-03-12 2 views
16

Это прекрасно работает:Get HTTPS ответ

require 'net/http' 

uri = URI('http://api.twitter.com/1/statuses/user_timeline.json') 
args = {include_entities: 0, include_rts: 0, screen_name: 'johndoe', count: 2, trim_user: 1} 
uri.query = URI.encode_www_form(args) 
resp = Net::HTTP.get_response(uri) 
puts resp.body 

Но переход от http к https приводит к бессмысленной ошибке. Я не спрашиваю, почему ошибка бессмысленна, я просто хотел бы знать, что является самым близким средством для выполнения get_response для https?

Я видел пример «HTTPS» в документе Net::HTTP, но он выглядит не очень впечатляющим и заставит меня вручную составить URL-адрес из моего хэша параметров - нехорошо.

ответ

21

Вот пример, который работает для меня под Руби 1.9.3

require "net/http" 

uri = URI.parse("https://api.twitter.com/1/statuses/user_timeline.json") 
args = {include_entities: 0, include_rts: 0, screen_name: 'johndoe', count: 2, trim_user: 1} 
uri.query = URI.encode_www_form(args) 
http = Net::HTTP.new(uri.host, uri.port) 
http.use_ssl = true 

request = Net::HTTP::Get.new(uri.request_uri) 

response = http.request(request) 
response.body 
+1

ЕГО в моей ссылке говорит _В предыдущих версий рубина вы должны были бы требовать «сети/HTTPS», чтобы использовать HTTPS. Это уже неправда. _ - мы должны просто игнорировать это? –

+0

вы правы, требуйте «net/http» в порядке, я отредактирую ответ – beanie

+1

, и в документе также говорится, что _require «net/http» также потребует «uri», поэтому вам не нужно его требовать отдельно ._ –

Смежные вопросы