2013-09-26 2 views
2

Что не соответствует указанному ниже запросу?Api Запросы с драгоценным камнем Ruby Typhoeus

request = Typhoeus::Request.new("http://fluidsurveys.com/api/v2/groups", 
            method: :get, 
            userpwd: "test_user:test_password", 
            headers: { 'ContentType' => "application/json"}) 
response = request.body 
puts response 

undefined method body for #<Typhoeus::Request:0x007f8e50d3b1d0> (NoMethodError) Это возвращает

следующий запрос отлично работает с httparty:

call= "/api/v2/groups/" 
auth = {:username => "test_user", :password => "test_password"} 
url = HTTParty.get("http://fluidsurveys.com/api/v2/groups", 
        :basic_auth => auth, 
        :headers => { 'ContentType' => 'application/json' }) 
response = url.body 
puts response 

EDIT:

Я попытался это:

response = request.response 
puts response.body 

не повезло. Я получаю это: undefined method body for nil:NilClass (NoMethodError)

ответ

6

От https://github.com/typhoeus/typhoeus

Вы должны сделать получить, прежде чем тело ответа доступно.

EDIT: Это оперативное решение. Он не использует ваш сайт, к которому я не мог получить доступ даже вручную. Но это возвращает код ответа 200 и response_body. Запуск этого в моем отладчике показал полный ответ, который вы могли видеть, используя «puts response.inspect».

class TyphoeusTry 
    require 'typhoeus' 
    request = Typhoeus::Request.new("http://www.google.com", 
            method: :get, 
            userpwd: "test_user:test_password", 
            headers: { ContentType: "application/json"}) 
    response = request.run 
    puts response.response_body 
end 
+0

Этот метод по-прежнему возвращает сообщение об ошибке. – Luigi

+0

Это в редакции выше. – Luigi

+0

Головная пощечина ... Хорошо, так что вам нужно получить ответ, прежде чем вы получите тело, конечно. Были ли сообщения журнала относительно запроса request.response? Я ожидал, что метод ответа вернет либо хэш, либо целочисленное значение ошибки HTTP, а не nil. Кроме того, я собираюсь провести некоторое исследование и вернусь ... –

0

Проблема в том, что вы фактически не выполнили свой запрос. Следующий код должен работать.

request = Typhoeus::Request.new("http://fluidsurveys.com/api/v2/groups", 
           method: :get, 
           userpwd: "test_user:test_password", 
           headers: { 'ContentType' => "application/json"}) 

request.run 
response = request.response 
response_code = response.code 
response_body = response.body