Facebook FQL запрос с Ruby
Я пытаюсь сделать простой GET с ruby на Facebook fql.метод запроса без успеха.
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: in '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 ответ:
Вызов 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
Пожалуйста, Не используйте Camel case в именах методов на 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)