TC官方合作论坛

 找回密码
 立即注册
查看: 1561|回复: 1

[问题] 原来的post功能库修改后也不能用啊

[复制链接]
发表于 2015-4-25 22:48:46 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
谁有能用的post库啊


功能 post(weburl,send,Case,Type,cookie="",header="",referer="",proxy="",proxyName="",proxyPassword="")

    变量 arrTemp=数组("","",""),http
    http=插件("Msxml2.XMLHTTP.6.0")
    http.Open(Type,weburl, 假)
    http.setRequestHeader("If-Modified-Since", "0")
    http.setRequestHeader("Cache-Control","no-cache")
    http.setRequestHeader("Accept","*/*")
    http.setRequestHeader("Connection","Keep-Alive")
    http.setRequestHeader("Accept-Language","zh-CN")
    http.setRequestHeader("Content-Length",字符串长度(send))
    http.setRequestHeader("UserAgent","Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET4.0C; .NET4.0E")   
    traceprint( 字符串长度(send))

    如果(Type=="post")
        http.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
    结束

    如果(cookie!="")
        http.setRequestHeader("Cookie",cookie)
    结束

    如果(proxy!="")
        http.setProxy(2,proxy,"")
    结束

    如果(proxyName!=""||proxyPassword!="")
        http.setProxyCredentials(proxyName,proxyPassword)
    结束

    http.send(send)
    循环(http.ReadyState != 4)
        等待(200)
    结束
header=http.getAllResp**eHeaders()

    变量    header2=http.getResp**eHeader("cookie")
    cookie=getCookie(header)
traceprint("header:"&header)
//   traceprint("header2:"&header2)
//    traceprint("cookie:"&cookie)
    变量 ret=BytesToBstr(http.Resp**eBody,Case)

    http=null
    arrTemp[0]=ret
    arrTemp[1]=header
    arrTemp[2]=cookie
    返回 arrTemp  
结束

//不包含域信息
功能 getCookie(header)
    变量 theader
    变量 cookie
    变量 retArray
//    traceprint(header)
    字符串分割(header,"\r\n",theader)

    变量 count=数组大小(theader)
    遍历(变量 i=0;i<count;i++)
        变量  regextext="Set-Cookie: (.+?)=([^;]+)?"

        变量 xx=字符串截取(theader[i],0,11)


        如果(xx=="Set-Cookie:")
           retArray=正则子表达式匹配(regextext,theader[i])   

            cookie=cookie&retArray[0]&"="&retArray[1]&";"
        结束
    结束
    cookie=字符串替换(cookie,";;",";")
    返回 cookie
结束


//包含域信息
功能 getCookieEx(header)
    变量 theader
    变量 cookie
    字符串分割(header,"\r\n",theader)
    变量 count
    count=数组大小(theader)
    遍历(变量 i=0;i<count;i++)
        变量  xx=字符串截取(theader[i],0,11)
        如果(xx=="Set-Cookie:")
            cookie=cookie&字符串截取(theader[i],11,字符串长度(theader[i]))&";"
        结束
    结束
    cookie=字符串替换(cookie,";;",";")
    返回 cookie
结束

功能 addDomain(cookie,domain)
    变量    pos=字符串查找字符(cookie,";")
    变量  t=字符串截取(cookie,0,pos+1)
    变量 end1=字符串截取(cookie,pos+1,字符串长度(cookie))   
    变量    ret=t&"domain="&domain&";"&end1
    返回 ret
结束

//设置IECookie
功能 setIECookie(weburl,cookie)
    变量 系统常量
    变量 ret=dllcall("wininet.dll","bool","InternetSetCookieExA","char*",weburl,"char *","qq","char *","0350910378","int",系统常量.INTERNET_COOKIE_THIRD_**,"int",0)
    变量 tt
    字符串分割(cookie,";",tt)
    变量 count
    count=数组大小(tt)
    遍历(变量 i=0;i<(count-1);i++)
        变量  tt1
        字符串分割(字符串修剪(tt[i]),"=",tt1)
        如果(tt1[0]!="HttpOnly")
            ret=dllcall("wininet.dll","BOOL","InternetSetCookieA","char *",weburl,"char *",tt1[0],"char *",tt1[1])
        否则
            ret=dllcall("wininet.dll","BOOL","InternetSetCookieA","char *",weburl,"char *",tt1[0],"char *","")
        结束

    结束  
结束

//获取网页打开的时间
//参数1:网页地址
//参数2:超时时间
功能 getHtmlGetticktime(weburl,time)
    变量 http,t
    http=插件("Msxml2.XMLHTTP")
    t=获取系统时间()  
    http.Open("get", weburl, 假)
    http.setRequestHeader("If-Modified-Since", "0")
    http.send("")
    如果(http.status == 200)
        http=null
        返回 获取系统时间()   - t
    结束
    循环(http.status != 200)
        如果(获取系统时间()- t>time)
            http=null
            返回 获取系统时间() - t
        结束
    结束

结束

//把二进制流转码
功能 BytesToBstr(body,Cset)
    // "UTF-8"
    变量    objstream =插件("Adodb.Stream")
    objstream.Type = 1
    objstream.Mode =3
    objstream.Open
    objstream.Write(body)
    objstream.Position = 0
    objstream.Type = 2
    objstream.Charset = Cset
    变量    str = objstream.ReadText
    objstream.Close
    objstream=null
    traceprint(str)
    返回 str
结束

//GB2312
//要用GB2312方式编码的字符串
功能 encodeGB2312(body,Cset)
    // "UTF-8"
    变量    objstream =插件("Adodb.Stream")
    objstream.Type = 0
    objstream.Mode =2
    objstream.Open
    objstream.Write(body)
    objstream.Position = 0
    objstream.Type = 1
    objstream.Charset = Cset
    变量 str = objstream.ReadText
    objstream.Close
    objstream=null
    返回 str
结束

//encodeURI
//要用encodeURI方式编码的字符串
功能 encodeURI(str)
    变量    ScriptContorl=插件("MSScriptControl.ScriptControl")
    ScriptContorl.AllowUI = 真
    ScriptContorl.Language = "JavaScript"//"JavaScript"
    ScriptContorl.AddCode("function add(s1){return encodeURI(s1);}")
    变量 ret=ScriptContorl.Run("add",str)
    ScriptContorl=null
    返回 ret
结束


//decodeURI
//要用decodeURI解码的字符串
功能 decodeURI(str)
    变量    ScriptContorl=插件("MSScriptControl.ScriptControl")
    ScriptContorl.AllowUI = 真
    ScriptContorl.Language = "JavaScript"//"JavaScript"
    ScriptContorl.AddCode("function add(s1){return decodeURI(s1);}")
    变量 ret=ScriptContorl.Run("add",str)
    ScriptContorl=null
    返回 ret
结束

//escape
//要用escape方式转码的字符串
功能 escape(str)
    变量 ScriptContorl=插件("MSScriptControl.ScriptControl")
    ScriptContorl.AllowUI = 真
    ScriptContorl.Language = "JavaScript"//"JavaScript"
    ScriptContorl.AddCode("function add(s1){return escape(s1);}")
    变量 ret=ScriptContorl.Run("add",str)
    ScriptContorl=null
    返回 ret
结束

//unescape
//要用unescape解码的字符串
功能 unescape(str)
    变量 ScriptContorl=插件("MSScriptControl.ScriptControl")
    ScriptContorl.AllowUI = 真
    ScriptContorl.Language = "JavaScript"//"JavaScript"
    ScriptContorl.AddCode("function add(s1){return unescape(s1);}")
    变量 ret=ScriptContorl.Run("add",str)
    ScriptContorl=null
    返回 ret
结束

//执行js代码
功能 runScriptCode(scriptcode,Script="JavaScript")
    变量 ScriptContorl=插件("MSScriptControl.ScriptControl")
    ScriptContorl.AllowUI=真
    ScriptContorl.Language=Script
    变量 ret=ScriptContorl.Eval(scriptcode)
    变量 ojb=null
    返回 ret
结束


//取两个字符串中间的信息
//参数1:源字符串
//参数2:要取的部分所在开头的字符串
//参数3:结束部分字符,默认为空,表示到到结尾
功能 mid(source,startStr,endStr="")
    变量    startpos
    变量   endpos
    变量 temp
    如果(startpos=="")
        startpos=0
    否则
        startpos=字符串查找字符(source,startStr)

    结束
    temp=字符串截取(source,startpos+字符串长度(startStr),字符串长度(source))

    如果(endStr=="")
        endpos=字符串长度(temp)
    否则
        endpos=字符串查找字符(temp,endStr)
    结束

    如果(startpos==-1 || endpos==-1)
        返回 ""
    结束
    变量    ret=字符串截取(temp,0,endpos)
    返回 ret
end

//获取时间戳
功能 getTimeUnix()    // TC标准时间格式
    变量    北京时间转Unix=指定时间("h",-8,当前时间())
    返回 时间间隔("s","1970/1/1 0:0:0",北京时间转Unix)
end

//把网络上的文件下载到本地
//参数1:文件地址
//参数2:文件本地存放的地址
功能 DownLoad(文件地址,保存路径)
    变量 http=插件("Microsoft.XMLHTTP")//创建一个com对象
    http.Open("get", 文件地址, 假)//以get模式打开文件
    http.setRequestHeader("Cache-Control","no-cache")//不使用本地缓存数据,防止每次数据一样
    http.send("")
    变量 t=获取系统时间()
    循环(http.ReadyState != 4)
        等待(100)
        如果(获取系统时间()-t>5000)
            返回 假
        结束
    结束
    变量 body=http.Resp**eBody   

    http=""
    变量 stream=插件("ADODB.Stream")//文件操作的对象
    stream.Type=1//这个我也不懂,参数就是这么写的
    stream.Open//打开文件流操作
    stream.write(body)//把文件流写入内存(猜测的)
    stream.saveToFile(保存路径,2)//然后把文件保存成二进制数据的指定文件
    stream.Close//关闭文件流操作
    stream=""
end

//将十进制数值转换成二进制
//参数1:十进制数值
功能 D2B(Dec)
    变量    ret
    循环(真)
        ret=Dec%2 & ret
        Dec=取整(Dec/2)
        如果(Dec==0)
            break
        结束
    结束
    返回 ret
结束

//将二进制数值转换成十进制
//参数1:二进制字符串
功能 B2D(Byte)
    变量 ret
    遍历(变量 i=0;i<字符串长度(Byte);i++)
        ret = ret * 2 + 转整型(字符串截取(Byte,i,i+1))
    结束   
    返回 ret
end

回复

使用道具 举报

发表于 2015-4-25 23:48:28 | 显示全部楼层
新版已完善对com的所有支持
请关注新版本的更新
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-6-2 05:47 , Processed in 0.047863 second(s), 23 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表