Как отправить HTTParty POST вызов со значениями тела в виде form-data - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть приложение RoR, из которого мне нужно вызвать сторонний API с несколькими разными вызовами.GET-запросы прекрасно работают как с Postman, так и с HTTParty, но я не могу заставить POST работать с последними.В Postman у меня есть запрос по умолчанию с basic auth , headers и полдюжиной параметров в body с параметром данных формы по умолчанию.

Запрос Postman работает нормально, но у меня было трудное время повторить запрос на HTTParty, что привело к тому, что API ответил с ошибкой при отсутствии параметров.

Вот часть кода, который яработает безрезультатно:

options = { headers: {"Accept"=>"application/json", "Content-Type"=>"application/json"}, 
:debug_output => $stdout, body: { "param1" => 1, "param2" => 5, 
"param3" => 'foo', "param4" => 'bar', "param5" => 'test' }
.to_json, 
basic_auth: {:username=>'censored', :password=>'censored'} }

response = HTTParty.post("#{Settings.api_url}", options)

opening connection to ...
opened
starting SSL for ...
SSL established
<- "POST ... HTTP/1.1\r\nAccept: application/json\r\n
Content-Type: application/json\r\nAuthorization: Basic censored\r\nConnection: close\r\n
Host: www.censored.com\r\n
Content-Length: 113\r\n\r\n"
<- "{\"param1\":1,\"param2\":5,\"param3\":\"foo\",\"param4\":\"bar\",\"param5\":\"test\"}"
-> "HTTP/1.1 200 OK\r\n"
-> "Server: Apache\r\n"
-> "Set-Cookie: PHPSESSID=...; path=/\r\n"
-> "Expires: Thu, 19 Nov 1981 08:52:00 GMT\r\n"
-> "Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0\r\n"
-> "Pragma: no-cache\r\n"
-> "Content-Length: 61\r\n"
-> "Connection: close\r\n"
-> "Content-Type: application/json\r\n"
-> "\r\n"
reading 61 bytes...

, а затем приходит ответ об ошибке.Я пробовал с различными комбинациями относительно body, также пытался установить заголовки Accept и Content-Type в multipart / formdata, но не получилось.Как я могу повторить запрос почтальона?

1 Ответ

0 голосов
/ 23 сентября 2019

Если вы хотите просто сделать копию запроса Почтальона, вы можете попробовать инструмент создания кода Почтальона.

Описание

enter image description here

...