как отправить post-запрос и открыть URL-адрес в Ruby Sinatra

#ruby #sinatra

#ruby #sinatra

Вопрос:

я отправляю post-запрос, и мне нужно получить результат, как с помощью html-формы, где мы переходим к некоторому URL-адресу после выполнения запроса

 <form action="url" method="post">
  

я попробовал это:

 return response.body()
  

и я получаю только тело html-страницы,
но мне нужно перенаправить на эту страницу.
как правильно перейти к нужному URL-адресу?

вот мой код для post-запроса:

     post '/send' do
            uri = URI.parse("https://wl.walletone.com/checkout/checkout/Index")
            response = Net::HTTP.post_form(uri, {
                "WMI_MERCHANT_ID" => "xxx",
                "WMI_PAYMENT_AMOUNT" => "10.00",
                "WMI_CURRENCY_ID" => "643"
            })
    end
  

Ответ №1:

Если вы хотите напрямую передать POST-запрос и перенаправить на него, вы можете сделать

 post '/send' do
  redirect <your_url>, 307
end
  

307 является ли код состояния HTTP не изменять метод запроса.

Обработайте ответ перенаправления следующим образом:

 post '/send' do
  # post form
  redirect response['location'], 302
end
  

Комментарии:

1. Нет, мне нужно изменить полученный post-запрос на «/ send», добавить несколько полей и отправить его walletone.com

2. У ответа нет местоположения перенаправления?

3. что за это местоположение? у меня есть uri

4. Нет, ответ, который вы получаете от post_form метода. Какой код состояния вы получаете? 200 OK или 302 перенаправления и т. Д…

5. вау, теперь response.body это: <html><head><title>Object moved</title></head><body> <h2>Object moved to <a href="/checkout/checkout/Index?i=334742142681amp;amp;m=191554294939">here</a>.</h2> </body></html>