Rails post 요청

3061 단어 postRailsNet::HTTP
헤더 없 는 요청
극악무도 한 서버 에서 User - agent 를 검사 하 는 것 을 주의 하 세 요. 전에 만난 적 이 있 습 니 다. User - agent 를 정상 으로 가 져 가세 요. 그렇지 않 으 면 403.
uri = URI.parse(url)
data = {name:xx, email:yy}
res = Net::HTTP.post_form(uri, data)

헤더 가 있 는 요청
uri = URI(url)
    begin
      request = Net::HTTP::Post.new(uri.path)
      request['AUTHENTICATION_TOKEN'] = 'xxxxxx'
      data = {name:xx, email:yy}
      request.set_form_data(data)
      res = Net::HTTP.start(uri.host, uri.port) do |http|
        http.request(request)
      end
      puts res.body
    rescue
      puts '    '
    end

https
uri = URI(url)
http = Net::HTTP.new(uri.host, uri.port)
if uri.scheme == 'https'
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
  http.use_ssl = true
end
begin
  request = Net::HTTP::Post.new(uri.request_uri)
  request['TOEKN'] = 'XXX'
  request.set_form_data(data)
  res = http.request(request)
  puts res.body
rescue
  puts '    '
end
uri = URI(url)
begin
  Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
    request = Net::HTTP::Get.new uri.request_uri
    response = http.request request
    puts "#{response.body.inspect}"
   end
 rescue
   puts '    '
 end

완전한 post 방법:
def post(url, params)
      uri = URI.parse(url)
      http = Net::HTTP.new(uri.host, uri.port)
      if uri.scheme == 'https'
        http.verify_mode = OpenSSL::SSL::VERIFY_NONE
        http.use_ssl = true
      end
      begin
        request = Net::HTTP::Post.new(uri.request_uri)
        request['Content-Type'] = 'application/json;charset=utf-8'
        request['User-Agent'] = 'Mozilla/5.0 (Windows NT 5.1; rv:29.0) Gecko/20100101 Firefox/29.0'
        request['X-ACL-TOKEN'] = 'xxx_token'
        #request.set_form_data(params)
        request.body = params.to_json
        response = http.start { |http| http.request(request) }
        puts response.body.inspect
        return JSON.parse response.body
      rescue =>err
        return nil
      end
    end

완전한 get 방법:
def get(url, params)
      uri = URI.parse(url)
      uri.query = URI.encode_www_form(params)
      http = Net::HTTP.new uri.host, uri.port
      if uri.scheme == 'https'
        http.verify_mode = OpenSSL::SSL::VERIFY_NONE
        http.use_ssl = true
      end
      begin
        request = Net::HTTP::Get.new uri.request_uri
        request['Content-Type'] = 'application/json;charset=utf-8'
        request['User-Agent'] = 'Mozilla/5.0 (Windows NT 5.1; rv:29.0) Gecko/20100101 Firefox/29.0'
        request['X-ACL-TOKEN'] =  'xxx_token'
        response = http.start { |http| http.request request }
        puts response.body.inspect
        return JSON.parse response.body
      rescue =>err
        return nil
      end
    end

좋은 웹페이지 즐겨찾기