Отправьте два запроса POST с одного URL с помощью Ruby - PullRequest
0 голосов
/ 20 декабря 2018

Я пытаюсь отправить два запроса POST с одной страницы.Приведенный ниже код отправляет первую форму и ведет на следующую страницу с тем же URL-адресом.

На следующей странице мне нужно активировать кнопку загрузки, чтобы вернуть файл xlsx.

require 'net/https'
require 'uri'

uri = URI.parse('example.com/page1.asp')
https = Net::HTTP.new(uri.host, uri.port)
https.use_ssl = true
req = Net::HTTP::Post.new(uri.request_uri)
req.set_form_data({"Firstname" => "name", "Lastname" => "lname", "submit1" => "Submit"})


puts res.body

Это раздел, который возвращается с puts res.body Я ищу:

<form  action="download.asp" method="post"  >
<input type="submit" value="Download"  name="Submit" />
<input type ="hidden" value="example.xlsx"  name="filename" />
</form>

Есть ли способ вызвать кнопку Отправить, а затем кнопку Скачатьс рубином?

1 Ответ

0 голосов
/ 20 декабря 2018

Вам нужно будет прочитать значения из формы и затем отправить их обратно:

uri = URI.parse('example.com/download.asp')
https = Net::HTTP.new(uri.host, uri.port)
https.use_ssl = true 
req = Net::HTTP::Post.new(uri.request_uri)
req.set_form_data({"Submit" => "Download", "filename" => "example.xlsx"})

Теперь любой ответ будет представлять собой данные файла, и в этом случае мы делаем это:

File.open(“download/filepath.xslx”, ‘w’) do |f|
  f.write res.body
end

Или он перенаправит вас на новый URL, и вам нужно будет вызвать запрос GET, как только вы получите окончательный файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...