복붙노트

[RUBY-ON-RAILS] 레일에서 다른 웹 사이트로 컨트롤러에서 POST 데이터를 제출

RUBY-ON-RAILS

레일에서 다른 웹 사이트로 컨트롤러에서 POST 데이터를 제출

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

해결법

  1. ==============================

    1.가장 간단한 방법은 루비의 핵심 라이브러리를 사용하고 있습니다 :

    가장 간단한 방법은 루비의 핵심 라이브러리를 사용하고 있습니다 :

    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 같은 보석을 사용하여 비동기 요청을 수행

  2. ==============================

    2.죄송합니다, 제가 보안 ​​서버에 연결하는 것을 언급 무시. 이것은 내가 파일 오류의 끝을 얻고 있었다 이유였던 것으로 보인다. 사용하여 추가 '순 / HTTPS'및 연결에 전화 USE_SSL 문제를 해결했다. 모든 사람의 도움을 주셔서 감사합니다.

    죄송합니다, 제가 보안 ​​서버에 연결하는 것을 언급 무시. 이것은 내가 파일 오류의 끝을 얻고 있었다 이유였던 것으로 보인다. 사용하여 추가 '순 / 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)}    
    

    내가 대답을 vlad.zloteanu 줄 것 같아요, 그래서이는 post_form 방법에 대한 소스 기반으로한다.

  3. ==============================

    3.외부 서버가 편안하고 경우, 간단하게 데이터를 처리 할 수 ​​ActiveResource 모델을 만들 수 있습니다.

    외부 서버가 편안하고 경우, 간단하게 데이터를 처리 할 수 ​​ActiveResource 모델을 만들 수 있습니다.

  4. ==============================

    4.나는 그것이 HTTP 302을 사용하기 때문에 redirect_to 핸들 요청을 게시 생각하지 않는다 (?) 그냥 다른 페이지를 얻을 수있다.

    나는 그것이 HTTP 302을 사용하기 때문에 redirect_to 핸들 요청을 게시 생각하지 않는다 (?) 그냥 다른 페이지를 얻을 수있다.

    난 당신이 뭔가를 할 수 있다고 생각

    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
    

    참고 :이 공기 코딩하고 시도 또는 테스트되지 않았습니다

  5. from https://stackoverflow.com/questions/1195962/submit-post-data-from-controller-to-another-website-in-rails by cc-by-sa and MIT license