ruby的http请求小脚本

经过昨天的实验,倘若接口做的事情过多时间超长,会被nginx拒绝请求返回超时。

所以用ruby做了一个批量调接口的小脚本,*有需要的人自取自改*。

require "open-uri"
require "net/https"
require "uri"

cookie =
  'dpadmin=360cc4800098092534fa9aedb4a78bf0b33f67e84c35660076ba6c9eab84847e0d3614348edfa4d4a8bf630529b40a28322230194c2ac52ef51c2ba4f310b9b1;
Domain=dper.com; Expires=Mon, 30-Dec-2013 22:38:45 GMT;
JSESSIONID=EA9BE36A86DCE564D7ED47571E79D82C; '
$headers = {"cookie"=>cookie}

def getFromUri(dealGroupId,uri,headers)
  req = Net::HTTP::Get.new(uri,headers)
  res = Net::HTTP.start(uri.host) do |http|
    http.request(req)
  end
  return res
end

def postForm(dealGroupId,uri,headers)
  req = Net::HTTP::Post.new(uri,$headers)
  req.set_form_data(:statusId=>0,:isValid=>false,:dealGroupId=>dealGroupId)
  res = Net::HTTP.start(uri.host) do |http|
    http.request(req)
  end
  return res;
end

def publish(dealGroupId)
  uri = URI::parse("http://tgplatform.sys.www.dianping.com/publish/fullPublish? dealGroupId=#{dealGroupId}")
  res = getFromUri(dealGroupId,uri,$headers)
  puts "#{dealGroupId}"+res.body
end

def changeStatus(dealGroupId)
  uri = URI::parse("http://tgplatform.sys.www.dianping.com/operation/setStatusId")
  res = postForm(dealGroupId,uri,$headers)
  puts "#{dealGroupId}"+"--status--"+res.body
end

def changeIsValid(dealGroupId)
  uri = URI::parse("http://tgplatform.sys.www.dianping.com/operation/setIsValid")
  res = postForm(dealGroupId,uri,$headers)
  puts "#{dealGroupId}"+"--valid--"+res.body
end

[0].each do |dealGroupId|
  publish(dealGroupId)
end

[2100131] .each do |dealGroupId|
  changeStatus(dealGroupId)
  changeIsValid(dealGroupId)
end

Cookie使用自己的

[2100131]表示数组,把要批量处理的一堆ID放进来就可以了。

更新后版本

require "open-uri"
require "net/https"
require "uri"

cookie = 'dpadmin=360cc4800098092534fa9aedb4a78bf0b33f67e84c35660076ba6c9eab84847e0d3614348edfa4d4a8bf630529b40a28322230194c2ac52ef51c2ba4f310b9b1;
Domain=dper.com; Expires=Mon, 30-Dec-2013 22:38:45 GMT;
JSESSIONID=EA9BE36A86DCE564D7ED47571E79D82C; '
$headers = {"cookie"=>cookie}

def getFromUri(dealGroupId,uri)
  req = Net::HTTP::Get.new(uri,$headers)
  Net::HTTP.start(uri.host) do |http|
    http.request(req)
  end
end

def publish(dealGroupId)
  uri = URI::parse("http://tgplatform.sys.www.dianping.com/publish/fullPublish?dealGroupId=#{dealGroupId}")
  puts "#{dealGroupId}"+getFromUri(dealGroupId,uri,$headers).body
end

def postForm(uri,form_data)
  req = Net::HTTP::Post.new(uri,$headers)
  req.set_form_data(form_data)
  Net::HTTP.start(uri.host) do |http|
    http.request(req)
  end
end

$method_name = {:Status=>"operation/setStatusId",:Valid=>"operation/setIsValid"}
class << self
  $method_name.each do |name,value|
    define_method "change"+name.to_s do |dealGroupId,form_data|
      uri = URI::parse("http://tgplatform.sys.www.dianping.com/"+value)
      puts "#{dealGroupId}"+"--"+name.to_s+"--"+postForm(uri,form_data).body
    end
  end
end

[2079479].each do |dealGroupId|
  form_data = {:statusId=>0,:isValid=>false,:dealGroupId=>dealGroupId}
  changeStatus(dealGroupId,form_data)
  changeValid(dealGroupId,form_data)
end