Facebook FQL Query с Ruby - PullRequest
       5

Facebook FQL Query с Ruby

2 голосов
/ 24 августа 2011

Я пытаюсь сделать простой GET с ruby ​​для метода Facebook fql.query, но безуспешно.

URL в основном структурирован так:

https://api.facebook.com/method/fql.query?query=SELECT total_count FROM link_stat WHERE url = "http://twitter.com/"&format=json

Я прочитал в нескольких постах здесь, на StackOverflow о том, как делать эти запросы, но даже если я продолжаю получать:

/ usr / lib / ruby ​​/ 1.8 / net / http.rb: 560: в `initialize ': getaddrinfo: Имя или служба неизвестны (SocketError)

В первой строке функции http_get.

def http_get(domain,path,params)
    return Net::HTTP.get(domain, "#{path}?".concat(params.collect { |k,v| "#{k}=#{CGI::escape(v.to_s)}" }.join('&'))) if not params.nil?
    return Net::HTTP.get(domain, path)
end

def getFacebookStats(url)

    params = {
        :query => 'SELECT total_count FROM link_stat WHERE url = "' + url + '"',
        :format => 'json'
    }

    http = http_get('https://api.facebook.com', '/method/fql.query', params)
    puts http

end

1 Ответ

1 голос
/ 24 августа 2011

HTTP-вызов принимает хост , а не URL:

def http_get(domain,path,params)
    path = unless params.blank
        path + "?" + params.collect { |k,v| "#{k}=#{CGI::escape(v.to_s)}" }.join('&')
      else
        path
    end
    request = Net::HTTP.get(domain, path)

end

def get_facebook_stats(url)

    params = {
        :query => 'SELECT total_count FROM link_stat WHERE url = "' + url + '"',
        :format => 'json'
    }

    http = http_get('api.facebook.com', '/method/fql.query', params)
    puts http

end

Пожалуйста, не используйте регистр верблюдов в именах методов в Ruby .

Если вы хотите совершать HTTPS-вызовы, вам придется использовать другой вызов:

require 'net/http'
require 'net/https'

http = Net::HTTP.new('somehost.com', 443)
http.use_ssl = true
path = '/login.html'

resp, data = http.get(path, nil)
...