不带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