Rails发起post请求

不带header的请求

注意万恶的服务器检测User-Agent,之前遇到过,带上User-Agent正常,否则403

uri = URI.parse(url)
data = {name:xx, email:yy}
res = Net::HTTP.post_form(uri, data)


带header的请求

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













  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值