ruby добавить данные в тело POST-запроса как Formdata - PullRequest
0 голосов
/ 04 июня 2018

Я работаю над реализацией, в которой мне нужно вызвать веб-сервис POST, который ожидает тело как данные формы.Поэтому, когда я тестирую из приложения PostMan, я выбираю «Body», а затем «form-data» и вводю два моих ключа и их значения, чтобы сделать вызов.
Это можно сделать в Java с использованием библиотеки jersey-media-multipart, а затем сделать что-то вродеэто MultiPart mp = new MultiPart(); FormDataBodyPart my_form_data1 = new FormDataBodyPart("my_key1", inputStream1, inputType1);<br> mp.addBodyPart(my_form_data1).

Однако из моего первого проекта Ruby on Rails неясно, как это можно сделать.
Есть идеи?

1 Ответ

0 голосов
/ 05 июня 2018

Класс Ruby Net :: HTTP может публиковать данные формы.Документация находится здесь https://docs.ruby -lang.org / ru / 2.0.0 / Net / HTTP.html .

Например

uri = URI('http://www.example.com/search.cgi')
res = Net::HTTP.post_form(uri, 'q' => ['ruby', 'perl'], 'max' => '50')
puts res.body

Если вы используетеPostMan вы можете скопировать команду как curl и воссоздать ее с кодом Ruby.Например, если вы получаете следующую форму команды curl PostMan

curl -X POST \ https://example.com/somthing/somthing/hay-now \ -H 'Cache-Control: no-cache' \ -H 'Content-Type: application/ x-www-form-urlencoded '\ -H' Почтальон-токен: cabfef34-17b1-43b5-bb95-ac7a9ec35bcb '\ -d test = testvalue``

Вы можете воссоздать команду curl следующим образом.

require 'net/http'    

uri = URI('https://example.com/somthing/somthing/hay-now')
    request = Net::HTTP::Post.new(uri)
    request. content_type = 'application/x-www-form-urlencoded'
    request.set_form_data('test' => 'testValue')
    Net::HTTP.start(uri.host, uri.port) do |http|
      response = http.request(request)
    end

Обратите внимание, это всего лишь пример.

...