如何在不使用表单的情况下从 rails 应用 post 到外部 url
How to post to external url from rails app without using form
我可以使用 html 表格 post 到我的支付网关。但是我有一个新的要求。现在,在单击 "payment" 按钮时,我必须验证商品是否仍可供购买,如果可用,则自动 post 将付款表格发送到网关。
也就是说,我想在单击按钮时执行一些 rails 控制器代码,然后如果验证成功,我想重定向到带有参数的外部 url(支付网关)。
我读到,在 rails 中使用 redirect_to 是不可能 post 的。也不可能 post 使用 ajax 到外部 url。我应该如何实现它?
您可以像这样使用 Ruby 的 Net::HTTP:
require "net/http"
require "uri"
uri = URI.parse("http://example.com/search")
params = {"foo" => "value one", "bar" => "value two"}
# Shortcut way
response = Net::HTTP.post_form(uri, params)
# With more control
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new(uri.request_uri)
request.set_form_data(params)
response = http.request(request)
puts response.code # => 200
puts response.body # => The body (HTML, JSON, etc)
我可以使用 html 表格 post 到我的支付网关。但是我有一个新的要求。现在,在单击 "payment" 按钮时,我必须验证商品是否仍可供购买,如果可用,则自动 post 将付款表格发送到网关。
也就是说,我想在单击按钮时执行一些 rails 控制器代码,然后如果验证成功,我想重定向到带有参数的外部 url(支付网关)。
我读到,在 rails 中使用 redirect_to 是不可能 post 的。也不可能 post 使用 ajax 到外部 url。我应该如何实现它?
您可以像这样使用 Ruby 的 Net::HTTP:
require "net/http"
require "uri"
uri = URI.parse("http://example.com/search")
params = {"foo" => "value one", "bar" => "value two"}
# Shortcut way
response = Net::HTTP.post_form(uri, params)
# With more control
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new(uri.request_uri)
request.set_form_data(params)
response = http.request(request)
puts response.code # => 200
puts response.body # => The body (HTML, JSON, etc)