Это странная вещь, которую каждый может воспроизвести дома (я думаю) - я пытаюсь написать простой сервис для поиска в Твиттере на сервисе, размещенном в EC2. Твиттер возвращает мне ошибки 100% времени при работе в ruby, но не на других языках, что указывает на то, что это не проблема блокировки IP. Вот пример:
admin@ec2-xx-101-152-xxx-production:~$ irb
irb(main):001:0> require 'net/http'
=> true
irb(main):002:0> res = Net::HTTP.post_form(URI.parse('http://search.twitter.com/search.json'), {'q' => 'twitter'})
=> #<Net::HTTPBadRequest 400 Bad Request readbody=true>
irb(main):003:0> exit
admin@ec2-xx-101-152-xxx-production:~$ curl http://search.twitter.com/search.json?q=twitter
{"results":[{"text":""Social Media and SE(Search Engine) come side by side to help promote your business and bran...<snip/>
Как видите, CURL работает, irb - нет. Когда я запускаю на своем локальном окне Windows в IRB, успех:
$ irb
irb(main):001:0> require 'net/http'
=> true
irb(main):002:0> res = Net::HTTP.post_form(URI.parse('http://search.twitter.com/search.json'), {'q' => 'twitter'})
=> #<Net::HTTPOK 200 OK readbody=true>
Это сбивает с толку ... если бы в Net :: HTTP была какая-то ошибка в ядре, я бы подумал, что она будет отображаться как в Windows, так и в Linux, и если бы я был заблокирован моим IP, то curl shouldn ' тоже не работает. Я попробовал это на новом экземпляре Amazon тоже со свежим IP-адди.
Любой должен иметь возможность воспроизвести это, потому что я использую ec2onrails ami:
ec2-run-instances ami-5394733a -k testkeypair
Просто введите ssh и запустите эти простые строки выше. У кого-нибудь есть идеи, что происходит?
Спасибо!