2013-04-30 1 views
0

У меня есть этот код:HTTP не возвращает JSON в Рубине

base_twitter_url = 'http://cdn.api.twitter.com/1/urls/count.json?url=' 
raw_url = base_twitter_url + 'http://www.google.com' 
url = URI.parse(raw_url) 
req = Net::HTTP::Get.new(url.to_s) 
res = Net::HTTP.start(url.host, url.port) {|http| 
    http.request(req) 
} 
p res.body 

Что я ожидаю возвращения JSON, потому что, делая это из браузера, как: https://cdn.api.twitter.com/1/urls/count.json?url=http://www.google.com я получаю JSON обратно.

Но не повезло. Что я здесь делаю неправильно?

EDIT:

Я просто попытался это из исходного файла рубина, и она отлично работает. Однако, когда вы делаете это из действия контроллера Rails, я не получаю никаких результатов. Невозможно понять, почему.

+0

Так что же вы получаете обратно вместо этого? – maerics

+0

Я ничего не вижу, если я делаю res.inspect –

+0

Что такое код состояния ответа ('res.code')? Обычно это первое место, когда вы отлаживаете HTTP-материал. – maerics

ответ

2

Ваш код отправляется на конечную точку HTTP, тогда как в браузере вы отправляетесь на конечную точку HTTPS (т. Е. Используете SSL). Этот конкретный адрес при переходе через HTTP возвращает перенаправление на версию HTTPS.

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