我正在尝试从一页提交两个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>
是否有一种方法可以触发“提交”按钮,然后再触发带有红宝石的“下载”按钮?
答案 0 :(得分:0)
您需要从表单中读取值,然后将其提交回去:
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请求。