2013-09-27 4 views
0

Я новичок в рубине. У меня есть следующий фрагмент кода, который выполняет операцию GET и извлекает имена моих facebook группОшибка при использовании Net :: HTTP GET-запроса

def get_groups 
    query=("SELECT gid,name FROM group where gid in(SELECT gid from group_member where uid=me)") 
    uri=URI("https://graph.facebook.com/fql") 
    params={'q'=>query,'access_token'=>TOKEN} 
    uri.query=URI.encode_www_form(params) 
    response=Net::HTTP.get_response(uri) 
    result=json.loads(response.text) 
    return result['data'] 
end 

Но когда я выполняю приведенный выше код я получаю следующие ошибки:

/usr/lib/ruby/1.9.1/net/protocol.rb:141:in `read_nonblock': Connection reset by peer (Errno::ECONNRESET) 
    from /usr/lib/ruby/1.9.1/net/protocol.rb:141:in `rbuf_fill' 
    from /usr/lib/ruby/1.9.1/net/protocol.rb:122:in `readuntil' 
    from /usr/lib/ruby/1.9.1/net/protocol.rb:132:in `readline' 
    from /usr/lib/ruby/1.9.1/net/http.rb:2562:in `read_status_line' 
    from /usr/lib/ruby/1.9.1/net/http.rb:2551:in `read_new' 
    from /usr/lib/ruby/1.9.1/net/http.rb:1319:in `block in transport_request' 
    from /usr/lib/ruby/1.9.1/net/http.rb:1316:in `catch' 
    from /usr/lib/ruby/1.9.1/net/http.rb:1316:in `transport_request' 
    from /usr/lib/ruby/1.9.1/net/http.rb:1293:in `request' 
    from /usr/lib/ruby/1.9.1/net/http.rb:1195:in `request_get' 
    from /usr/lib/ruby/1.9.1/net/http.rb:455:in `block in get_response' 
    from /usr/lib/ruby/1.9.1/net/http.rb:745:in `start' 
    from /usr/lib/ruby/1.9.1/net/http.rb:454:in `get_response' 
    from fb.rb:12:in `get_groups' 
    from fb.rb:32:in `<main>' 

Что такое ошибка что я здесь делаю?

+1

попробовать этот http://stackoverflow.com/questions/11369234/ruby-http-library-gets-connection-reset-with-facebook-app –

ответ

2

Я считаю, что проблема заключается в использовании библиотеки HTTP для доступа к службе HTTPS. Это принципиально разные вещи. Вот пример HTTPS:

require 'net/http' 
require 'net/https' 
http = Net::HTTP.new('www.example.com', 443) 
http.use_ssl = true 
http.ssl_version = :TLSv1 
http.ciphers = "ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:-LOW" 
http.verify_mode = OpenSSL::SSL::VERIFY_PEER 
req = Net::HTTP::Get.new('/', {'Content-Type' =>'application/json'}) 
http.start {|http| http.request(req) } 
0

Кажется, что у вас есть проверка валидации сертификата SSL. Попробуйте отключить проверку SSL.

Net::HTTP.verify_mode = OpenSSL::SSL::VERIFY_NONE 

Если выше, то возможно, что корень проблемы - текущая установка OpenSSL. Попробуйте обновить его до последней версии.

+0

предположить, что кто-то отключить SSL-сертификат проверка делает Интернет небезопасным местом. –

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