Отправьте данные POST от контроллера до другого веб-сайта в направляющих

Я нахожу, что использование addAll хорошо работает.

ArrayList<String> copy = new ArrayList<String>();
copy.addAll(original);

круглые скобки используются, а не синтаксис дженериков

48
задан Jonathan Soifer 25 February 2018 в 05:34
поделиться

4 ответа

Самый простой способ - использовать базовую библиотеку ruby:

require "uri"
require "net/http"

params = {'box1' => 'Nothing is less important than which fork you use. Etiquette is the science of living. It embraces everything. It is ethics. It is honor. -Emily Post',
'button1' => 'Submit'
}
x = Net::HTTP.post_form(URI.parse('http://www.interlacken.com/webdbdev/ch05/formpost.asp'), params)
puts x.body

Совет для профессионалов: выполните асинхронный запрос, используя такой гем, как delayed_job или background_rb

82
ответ дан 7 November 2019 в 12:11
поделиться

Извините, я забыл упомянуть, что подключаюсь к защищенному серверу. Похоже, это было причиной того, что я получал ошибки конца файла. Добавление с использованием net / https и вызов use_ssl при подключении решило проблему. Спасибо за помощь.

require 'net/https'
require 'open-uri'

url = URI.parse('https://MY_URL')
req = Net::HTTP::Post.new(url.path)
req.form_data = data
req.basic_auth url.user, url.password if url.user
con = Net::HTTP.new(url.host, url.port)
con.use_ssl = true
con.start {|http| http.request(req)}    

Это основано на исходном коде метода post_form, так что, думаю, я дам ответ vlad.zloteanu.

33
ответ дан 7 November 2019 в 12:11
поделиться

Я не думаю, что redirect_to обрабатывает почтовые запросы, потому что он использует http 302 (?), который просто ПОЛУЧАЕТ другую страницу.

Я думаю, вы можете сделайте что-нибудь вроде этого

Class MyController < ActionController
    require 'net/http'

    def my_method
        #do something with the data/model

        my_connection = Net::HTTP.new('www.target.com', 80)
        reponse = my_connection.post(path_within_url, data)

        #do something with response if you want
    end

end

примечание: это кодировка воздуха, и она не была опробована и протестирована

4
ответ дан 7 November 2019 в 12:11
поделиться

Если внешний сервер поддерживает RESTful, просто создайте модель ActiveResource для обработки ваших данных.

12
ответ дан 7 November 2019 в 12:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: