Ошибка при выполнении HTTP-запроса

Я использую драгоценный камень Typhoeus для выполнения HTTP-запросов в моем приложении rails. Запрос заключается в следующем.

 data = {"auth_token"=>"abcd" ,"employee" => {"method" => "add_employee"}}
 header =  { "Content-Type" => "application/json","Accept"=>"application/json"}
 request = Typhoeus::Request.post("www.example.com",:body=> data.to_json,:headers => header)

здесь при выполнении этого auth_token был преобразован в auth%5Ftoken=abcd. На самом деле мой API ожидал параметр auth_token. Из-за этого API не позволяет получить к нему доступ. Это выбрасывает несанкционированную ошибку. Пожалуйста, помогите мне решить эту проблему. Заранее спасибо.

2 ответа

Решение

Я исправил эту проблему с помощью to_query. На самом деле to_query анализирует фактические данные в API

Вот пример использования RestClient, который показывает правильное представление данных, я ожидаю, что Typhoeus не будет отличаться:

 data = {"auth_token"=>"abcd" ,"employee" => {"method" => "add_employee"}}
 header =  { "Content-Type" => "application/json","Accept"=>"application/json"}
 RestClient.post("www.example.com", data.to_json, header){ |response, request, result| 
       puts "PAYLOAD:"+request.args[:payload]
 }  

Вот полезная нагрузка, как и ожидалось:

 PAYLOAD: "{\"auth_token\":\"abcd\",\"employee\":{\"method\":\"add_employee\"}}"

Используя Typhoeus:

 data = {"auth_token"=>"abcd" ,"employee" => {"method" => "add_employee"}}
 header =  { "Content-Type" => "application/json","Accept"=>"application/json"}
 request = Typhoeus::Request.post("www.example.com",:body=> data.to_json,:headers => header)
 request.request.original_options[:body]

Как и ожидалось, это полезная нагрузка запроса. Так что твой код хорош!

 "{\"auth_token\":\"abcd\",\"employee\":{\"method\":\"add_employee\"}}"
Другие вопросы по тегам