--[[local g = require 'library.global'
--__ml_ss = mlc.prefix.ml_psession..tostring(os.time());
local mlc = require 'ml_config'

local function haslogin()
local r = g.getredis()
local s,e = r:get();
if s ~= nil then
return true;
else
return false;
end
end

local ffiok, ffi = pcall(require,"ffi")
--require('library.kav_fnc')
--md5 = require('library.md5')
system_hid = {}

--require "redis"

--[[local myclient = redis.connect();
local all_keys = myclient:keys("*");
local all_values = myclient:mget(all_keys);

for i, k in ipairs( all_keys) do
local v = all_values[i];
print(k, v)
end --]]

--[[local result ={}
for i = 1,#(KEYS) do
result[i]= redis.call('get',KEYS[i])
end
return result--]]

--[[local result={};
local myperson=KEYS[1];
local nums=ARGV[1];

local myresult =redis.call("hkeys",myperson);

for i,v in ipairs(myresult) do
local hval= redis.call("hget",myperson,v);
redis.log(redis.LOG_WARNING,hval);
if(tonumber(hval)<tonumber(nums)) then
table.insert(result,1,v);
end
end

fodr i=1,#(result) do
print(result[i])
end

return result;--]]
--]]

--[[local myKeyList=redis.call("keys","string.tmd.*")
local count=0
local tempStrlocal str --experience all the keys 遍历数组 有多种方法遍历数组 网上很容易找到
for index,line in pairs(myKeyList) do --通过Redis API调用 获取line的值 line即为键
str=redis.call("get",line) --string.sub() match() gmatch() len() 对字符串操作的函数
local matchStr=string.match(str,"http://tmd2.ghost.com/comment/images/%d+.png")
--匹配到http链接 --下面注释掉的函数可以在"服务器"端打印变量的值
print(matchStr)
local reserveStr=matchStr.sub(matchStr,40,string.len(matchStr));
--将链接截断,并替换成指定的模式
--print(reserveStr) -- .. 用于连接字符串 不像java中用 + 此处替换 str为源 中间为模式 右边为目标
tempStr=string.gsub(str,"http://tmd2.ghost.com/comment/images/%d+.png","http://tmd2-img.ghost.com/1/"..reserveStr) --print(tempStr) --替换完后将之重新设置到Redis中
redis.call("set",line,tempStr)
print(redis.call("get",line))
end--]]

---------------------------------------------

二、lua发送http请求代码

1.get请求

bash
local zhttp = require "resty.http"
local function http_post_client(url, timeout)
local httpc = zhttp.new()

timeout = timeout or 30000
httpc:set_timeout(timeout)

local res, err_ = httpc:request_uri(url, {
method = "GET",
headers = {
["Content-Type"] = "application/x-www-form-urlencoded",
}
})
httpc:set_keepalive(5000, 100)
--httpc:close()
return res, err_
end

2.post请求

bash

local zhttp = require "resty.http"
local function http_post_client(url,body,timeout)
local httpc = zhttp.new()

timeout = timeout or 30000
httpc:set_timeout(timeout)

local res, err_ = httpc:request_uri(url, {
method = "POST",
body = body,
headers = {
["Content-Type"] = "application/x-www-form-urlencoded",
}
})
httpc:set_keepalive(5000, 100)
httpc:close()
if not res then
return nil, err_
else if res.status == 200 then
return res.body, err_
else
return nil, err_ end
end

end

bash

--get
local resp, err = http_post_client("http://zixuephp.net/index.html?name=test",3000)
--post
local body = {"name" = "test"}
local resp, err = http_post_client("http://zixuephp.net/index.html?name=test",body,3000)

----------------------------------------

require("curl")

local ipList =
{
"192.168.1.1",

  "192.168.1.1",

}

--登陆
function loginWeb(ip)
  c = curl.easy_init()
  c:setopt(curl.OPT_SSL_VERIFYHOST, 0);
  c:setopt(curl.OPT_SSL_VERIFYPEER, 0);
  c:setopt(curl.OPT_URL, "https://"..ip.."/")
c:setopt(curl.OPT_POSTFIELDS, "Username=admin&Password=admin&Frm_Logintoken=&action=login")

  c:setopt(curl.OPT_WRITEFUNCTION, function(buffer)
    --print(buffer)
    --print("\r\n---------------------------\r\n");
    return #buffer
  end)

c:perform()
end

--访问页面
function accessPage(ip)
  c = curl.easy_init()
  c:setopt(curl.OPT_SSL_VERIFYHOST, 0);
  c:setopt(curl.OPT_SSL_VERIFYPEER, 0);
  c:setopt(curl.OPT_URL, "https://"..ip.."/xxpage.html")

  c:setopt(curl.OPT_WRITEFUNCTION, function(buffer)

    --print(buffer)
    --print("\r\n---------------------------\r\n");
    return #buffer
  end)

c:perform()
end

--设置参数
function setParameter(ip, file)
  c = curl.easy_init()
  c:setopt(curl.OPT_SSL_VERIFYHOST, 0);
  c:setopt(curl.OPT_SSL_VERIFYPEER, 0);
  c:setopt(curl.OPT_URL, "https://"..ip.."/xx.php")
  c:setopt(curl.OPT_POSTFIELDS, "DaylightSavingsUsed=1&Dscp=-1")

  local htmlTable = {}
  c:setopt(curl.OPT_WRITEFUNCTION, function(buffer)

    --print(buffer)
    --print("\r\n---------------------------\r\n");
    table.insert(htmlTable, buffer)
    return #buffer
  end)

c:perform()

  local htmlStr = table.concat(htmlTable);
  local resultBuff = "";
  if string.match(htmlStr, "<result>SUCC</result>") ~= nil then
    resultBuff = ip.." config OK\r\n";
    print(resultBuff)
    file:write(resultBuff);

  else

    resultBuff = ip.." config NOK\r\n";
    print(resultBuff)

   file:write(resultBuff);

 end

end

local file = io.open(".\\result.txt", "w+");
for key,ip in ipairs(ipList) do
  loginWeb(ip);
  accessPage(ip);
  openLightSave(ip, file);
end
file:close();

print("Done")

------------------------------------------------------------------------------------------------------------------

local function postdata(url,postdata)
local res="";
c = curl.new()
c:setopt(curl.OPT_URL,url)
c:setopt(curl.OPT_POSTFIELDS,postdata)
c:setopt(curl.OPT_WRITEFUNCTION, function(userparam,buffer)
if buffer ~= nil then
--local f = io.open(kav_fnc.getmodulepath()..'session2.dat','w')
--if f ~= nil then
--f:write(buffer);
print( buffer);
--f:close();
--end

res =res .. buffer;
return #buffer;
end
end)

local i,j,k = c:perform();

local rep=string.char(239, 187, 191);-- 防 utf标志开头 EF BB BF
res =string.gsub(res,rep,'');
if i == nil then
return nil,j,k;
else
return res;
end

return nil;
end

在C:\Users\Administrator\Desktop\lua\library\util.lua

local M = {}
_G[NAME] = M
function M.getFile(file_name)
local f = assert(io.open(file_name, 'r'))
local string = f:read("*all")
f:close()
return string
end

url请求的更多相关文章

  1. HttpUrlConnection发送url请求(后台springmvc)

    1.HttpURLConnection发送url请求 public class JavaRequest { private static final String BASE_URL = "h ...

  2. Objective-C中把URL请求的参数转换为字典

    上一篇博客中是把URL转换为字典,那么我们如何把URL请求中的参数封装成字典,然后再封装成数组呢?对OC中字符串操作熟练的小伙伴们应该觉得这是一个a+b的问题,没错把URL中的参数转换为字典主要是对字 ...

  3. AFNETWorking 不支持中文URL请求

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000; min-height: 16.0px } p.p ...

  4. SpringMVC学习系列(3) 之 URL请求到Action的映射规则

    在系列(2)中我们展示了一个简单的get请求,并返回了一个简单的helloworld页面.本篇我们来学习如何来配置一个action的url映射规则. 在系列(2)中我们在HelloWorldContr ...

  5. IIS 7.5 + asp.net MVC4 设置路由处理URL请求

    使用asp.net MVC4开发的网站,在本地的VS012环境下运行,一切正常.但当发布到Windows 2008 R2(IIS7.5 + Framework4.5)上时,访问相关网页时,出现有下面的 ...

  6. Request.url请求路径的一些属性

    Request.url请求路径的一些属性1,Request.UrlReferrer.AbsolutePath=获取URL的绝对路径例:"/Manager/Module/OfficialMan ...

  7. java解析出url请求的路径和参数键值对类 - 转

    import java.util.HashMap; import java.util.Map; public class CRequest { /** * 解析出url请求的路径,包括页面 * @pa ...

  8. 无论url请求什么.都可以拼接class类名.实例化.传递get参数-->给当前控制器-->传递给抽象父类-->都交给抽象父类.这个方法去处理call_user_func_array()

    <?phpdefine('DS','/');define('A_PATH',str_replace('\\','/',dirname(__FILE__)).DS); //01获取到主程序目录cl ...

  9. region URL请求数据

    #region URL请求数据 /// <summary> /// HTTP POST方式请求数据 /// </summary> /// <param name=&quo ...

  10. QWebEngineView拦截Url请求设置

    QWebEngineView拦截Url请求设置 QWebEngineUrlRequestInterceptor类提供了一个拦截URL请求抽象基类,可通过实现QWebEngineUrlRequestIn ...

随机推荐

  1. mysql的count和sum使用条件表达式

    count函数条件不为null的时候显示结果.即使为false也也会显示结果. 可以是使用if条件或者case when语句.如果条件不为null即需要的结果. 使用count()函数实现条件统计的基 ...

  2. Docker+Rancher构建部署流水线

    工作多年,在项目部署方面, 1:以前用ftp或者rz上传更新的,每次更新算上打包.目录切换.更新遗漏.备份.出错还原.启动等工作都得搞上一来小时甚至更长,要是多两台服务器那心都凉了: 2:后来有用sv ...

  3. mysql5.7 彻底解决sql_mode=only_full_group_by

    ONLY_FULL_GROUP_BY是mysql默认的一种sql模式,其作用是约束sql语句:要求select中的所有字段,除复合函数外,全部要出现在group by中. 默认这种模式是有原因的,因为 ...

  4. 【SQL】 java.sql.SQLException: You can't specify target table 'emp' for update in FROM clause

    在执行sql: delete from emp where id in (select id from emp where cdate<'2018-02-02') 时报出以下异常: ### Th ...

  5. mybatis映射文件祥解(StudentMapper.xml)

    1)以下是StudentMapper.xml文件,提倡放在与实体同目录下,文件名任意 <?xml version="1.0" encoding="UTF-8&quo ...

  6. Python的一个bug,记录一下

    安装报错:E:\webpy-master>python setup.py installTraceback (most recent call last): File "setup.p ...

  7. Python3 编程第一步_关键字end

    关键字end可以被用于防止输出新的一行,或者在输出的末尾添加不同的字符: a, b = 0, 1 while b < 1000: print(b, end=',') a, b = b, a+b ...

  8. memcached源码分析-----item过期失效处理以及LRU爬虫

    memcached源码分析-----item过期失效处理以及LRU爬虫,memcached-----item 转载请注明出处:http://blog.csdn.net/luotuo44/article ...

  9. React Native实战一

    效果图如下所示: 展示列表页面,点击跳转至详情页面:     /** * Sample React Native App * https://github.com/facebook/react-nat ...

  10. php代码判断用户访问的当前协议是否为https

    public function isHttps() { if ( ! empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) ...