2016-02-03 8 views
4

В документах нет хороших примеров того, как сделать запрос POST. Мне нужно сделать запрос POST с параметром auth_token и получить ответ обратно:Rails RestClient POST запрос с ошибкой «400 Bad Request»

response = RestClient::Request.execute(method: :post, 
         url: 'http://api.example.com/starthere', 
         payload: '{"auth_token" : "my_token"}', 
         headers: {"Content-Type" => "text/plain"} 
         ) 

400 плохой ошибка запроса:

RestClient::BadRequest: 400 Bad Request 
    from /Users/me/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rest-client-1.8.0/lib/restclient/abstract_response.rb:74:in `return!' 
    from /Users/me/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rest-client-1.8.0/lib/restclient/request.rb:495:in `process_result' 
    from /Users/me/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rest-client-1.8.0/lib/me/request.rb:421:in `block in transmit' 

Есть хорошие примеры, как сделать запрос POST с помощью RestClient?

EDIT:

Это, как я сделать запрос в модели:

def start 
    response = RestClient::Request.execute(method: :post, 
         url: 'http://api.example.com/starthere', 
         payload: '{"auth_token" : "my_token"}', 
         headers: {"Content-Type" => "text/plain"} 
         ) 
    puts response 

    end 
+0

вы уверены, что ваш запрос 'запрос текст/plain'? – Pavan

+0

@ Паван скручивается, поэтому я думаю, что это правильно? 'curl' http://api.example.com/starthere "-d" auth_token = my_token "' – Tom

+0

Как вы обрабатываете запрос у контроллера? Можете ли вы опубликовать связанный код? – Pavan

ответ

0

Если вы просто хотите, чтобы повторить локон запрос:

response = RestClient::Request.execute(method: :post, url: 'http://api.example.com/starthere', payload: {"auth_token" => "my_token"}) 

Оба Curl и По умолчанию для RestClient используется тот же тип содержимого (application/x-www-form-urlencoded) при отправке данных в этот формат.

+0

все еще получает «RestClient :: BadRequest: 400 Bad Request» – Tom

+0

@ То, что я протестировал с вашими данными, получил тот же запрос с моим фрагментом RestClient, как с вашим примером curl. Вы уверены, что передали полезную нагрузку как хэш, а не строку? – Pafjo

1

Попробуйте использовать хэш, как это:

def start 
    url= 'http://api.example.com/starthere' 
    params = {auth_token: 'my_token'}.to_json 
    response = RestClient.post url, params 
    puts response 
end 

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

  • Нет связанных вопросов^_^