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