Ошибка при выполнении 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\"}}"