马上加入TC
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 awlbm 于 2014-9-21 04:54 编辑
在第14行和347行!
- namespace winhttp
- //通过post向网站提交数据
- //参数1:提交的模式
- //参数2:要提交的网页地址
- //参数3:要提交的数据
- //参数4:返回的网页数据的编码
- function openUrl(type,weburl,send="",Cset="utf-8")
- //http=com("MSXML2.ServerXMLHTTP.3.0")
-
- traceprint(":传到常规库的网址为" & weburl&"---" & 日期时间.当前日期())
-
- traceprint(":创建xmlhttp---"&日期时间.当前日期())
- //http=com("microsoft.xmlhttp") //报错 未知错误
- http=com("MSXML2.xmlhttp") //报错 未知错误
- //traceprint(http)
- traceprint(":创建xmlhttp("&类型.转字符型(http)&":"&类型.获得类型(http)&")完成---"&日期时间.当前日期())
- traceprint(":创建xmlhttp("&类型.转整型(http)&":"&类型.获得类型(http)&")完成---"&日期时间.当前日期())
- traceprint(":创建xmlhttp("&type.cdouble(http)&":"&类型.获得类型(http)&")完成---"&日期时间.当前日期())
- traceprint(":创建xmlhttp("&类型.转浮点型(http)&":"&类型.获得类型(http)&")完成---"&日期时间.当前日期())
-
- 如果(http==""||http==null)
-
- 辅助.消息框("创建http失败!")
- 矿机监控.线程开关信号=假
- //线程.关闭()
- //矿机监控.监控线程
- 如果结束
-
-
- if(str.strlowercase(type)=="post")
- traceprint(":open---"&日期时间.当前日期())
- http.Open("post", weburl, false)
- traceprint(":open完成---"&日期时间.当前日期())
- http.setRequestHeader("Cache-Control","no-cache")
- http.setRequestHeader("Accept", "*/*")
- http.setRequestHeader("UserAgent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET4.0C; .NET4.0E")
- http.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
- else
- traceprint(":open---"&日期时间.当前日期())
- http.Open("get", weburl, false)
- traceprint(":open完成---"&日期时间.当前日期())
- http.setRequestHeader("Accept", "*/*")
- http.setRequestHeader("UserAgent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET4.0C; .NET4.0E")
- http.setRequestHeader("Cache-Control","no-cache")
- endif
- traceprint(":send---"&日期时间.当前日期())
- http.send(send)
- traceprint(":send完成---"&日期时间.当前日期())
- //times=0
- //while(http.status != 200||times==3000)
- //help.sleep(1)
- //times=times+1
- //endwhile
-
- //help.sleep(3000)
-
- //stime =日期时间.当前日期() //获取当前时间
- // // //traceprint("前时间:"&stime)
- // //traceprint("ReadyState:"&http.ReadyState)
- //循环(http.ReadyState!=4||http.status!=200)
- // // //traceprint("ReadyState:"&http.ReadyState)
- //ntime =日期时间.当前日期() //获取循环时间
- // // //traceprint("后时间:"&ntime)
- //时间差=日期时间.日期间隔("s",stime,ntime)
- //如果(时间差>15)
- // //traceprint("时间差:"&时间差)
- //跳出 //判断满足条件者跳出循环
- //如果结束
-
- //循环结束
- //自修改代码部分开始
- stime=1
- //traceprint(":ReadyState="&http.ReadyState&"|status="&http.status&"---"&日期时间.当前日期())
- //----------------------
- //while(http.ReadyState!=4||http.status!=200)
-
- //if(stime>4)
- //traceprint(":打开网页超过5秒结束---"&日期时间.当前日期())
- //http=null
- //ret =""
- //return ret
- ////break //判断满足条件者跳出循环
- //endif
- //stime++
- //help.sleep(500)
- //endwhile
- //traceprint(":循环"&stime&"次结束---"&日期时间.当前日期())
- //-----------------
-
- //======================
- t=system.gettickcount()
- while(http.ReadyState != 4)
- help.sleep(100)
- if((system.gettickcount()-t)>5000)
- traceprint(":打开网页超过5秒结束---"&日期时间.当前日期())
- http=null
- ret =""
- return ret
- //return false
- endif
- endwhile
- //=======================
-
- //help.sleep(1000)
- //自修改代码部分结束
- //网络借鉴
-
- //网络借鉴
- traceprint(":开始BytesToBstr---"&日期时间.当前日期())
- ret = winhttp.BytesToBstr(http.Resp**eBody,Cset)
- traceprint(":BytesToBstr完成---"&日期时间.当前日期())
- header=http.GetAllResp**eHeaders()
- traceprint(":GetAllResp**eHeaders完成---"&日期时间.当前日期())
- http=null
- traceprint(":释放http("&http&":"&类型.获得类型(http)&")完成---"&日期时间.当前日期())
- //traceprint(":释放http完成---"&日期时间.当前日期())
- return ret
- endfunction
- //自动识别编码
- function openUrlExAutoCset(type,weburl,send="",setcookie="",&header="",Cset="utf-8")
- http=com("WinHttp.WinHttpRequest.5.1")
- //http=com("MSXML2.ServerXMLHTTP.6.0")
- if(str.strlowercase(type)=="post")
- http.Open("post", weburl, false)
- //http.setRequestHeader("Cache-Control","no-cache")
- http.setRequestHeader("If-Modified-Since","0")
- http.setRequestHeader("Accept", "*/*")
- http.setRequestHeader("Connection","Keep-Alive")
- http.setRequestHeader("Accept-Language","zh-CN")
- http.setRequestHeader("Content-Length",str.strleng(send))
- http.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
- http.setRequestHeader("UserAgent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET4.0C; .NET4.0E")
- if(setcookie!="")
- http.setRequestHeader("Cookie",setcookie)
- endif
- http.setRequestHeader("Referer",weburl)
-
- else
- http.Open("get", weburl, false)
- http.setRequestHeader("If-Modified-Since","0") //
- http.setRequestHeader("Accept", "*/*")
- http.setRequestHeader("Connection","Keep-Alive")
- http.setRequestHeader("Accept-Language","zh-CN")
- http.setRequestHeader("UserAgent","Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET4.0C; .NET4.0E")
- if(setcookie!="")
- http.setRequestHeader("Cookie",setcookie)
- endif
- http.setRequestHeader("Referer",weburl)
- endif
- http.send(send)
- http.WaitForResp**e(5000)
- status=http.status
- header=http.GetAllResp**eHeaders()
- retcset=http.getResp**eHeader("Content-Type")
- cset=StrEx.mid(retcset,"charset=")
- if(cset=="")
- cset=Cset
- endif
- ret = winhttp.BytesToBstr(http.Resp**eBody,cset)
- http=null
- return ret
- endfunction
- function openUrlEx(type,weburl,send="",setcookie="",&header="",Cset="utf-8")
- http=com("WinHttp.WinHttpRequest.5.1")
- if(str.strlowercase(type)=="post")
- http.Open("post", weburl, false)
- http.setRequestHeader("Cache-Control","no-cache")
- http.setRequestHeader("Accept", "*/*")
- http.setRequestHeader("UserAgent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET4.0C; .NET4.0E")
- http.setRequestHeader("Connection","Keep-Alive")
- http.setRequestHeader("Accept-Encoding","*")
- http.setRequestHeader("Accept-Language","zh-CN")
- http.setRequestHeader("Content-Length",str.strleng(send))
- http.setRequestHeader("Cookie",setcookie)
- http.setRequestHeader("Referer",weburl)
- http.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
- else
- http.Open("get", weburl, false)
- http.setRequestHeader("Cache-Control","no-cache")
- http.setRequestHeader("Accept", "*/*")
- http.setRequestHeader("UserAgent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET4.0C; .NET4.0E")
- http.setRequestHeader("Connection","Keep-Alive")
- http.setRequestHeader("Accept-Encoding","*")
- http.setRequestHeader("Accept-Language","zh-CN")
- http.setRequestHeader("Cookie",setcookie)
- http.setRequestHeader("Referer",weburl)
- endif
- http.send(send)
- http.WaitForResp**e(5000)
- //if(http.status == 200)
- //header=http.GetAllResp**eHeaders
- //ret = winhttp.BytesToBstr(http.Resp**eBody,Cset)
- //http=null
- //return ret
- //endif
- //if(http.status == 302)
- //header=http.GetAllResp**eHeaders
- //ret = winhttp.BytesToBstr(http.Resp**eBody,Cset)
- //http=null
- //return ret
- //endif
- status=http.status
- header=http.GetAllResp**eHeaders()
- //retcset=http.getResp**eHeader("Content-Type")
- //cset=StrEx.mid(str.strlowercase(retcset),"charset=")
- //if(cset)
- //cset=StrEx.mid(str.strlowercase(http.Resp**etext),"charset=")
- //endif
- ret = winhttp.BytesToBstr(http.Resp**eBody,Cset)
- http=null
- return ret
- endfunction
- //不包含域信息
- function getCookie(header)
- theader
- cookie
- str.split(header,"\r\n",theader)
- count
- arraysp.size(theader,count)
- for(i=0;i<count;i++)
- regextext = "Set-Cookie: (.+?)=([^;]+)?"
- retArray
- xx = str.strsub(theader[i],0,11)
- if(xx=="Set-Cookie:")
- num = 字符串.正则子表达式匹配(regextext,theader[i],retArray)
- cookie&=retArray[0]&"="&retArray[1]&";"
- endif
- endfor
- //cookie=str.replace(cookie,";;",";")
- return cookie
- endfunction
- //包含域信息
- function getCookieEx(header)
- theader
- cookie
- str.split(header,"\r\n",theader)
- count
- arraysp.size(theader,count)
- for(i=0;i<count;i++)
- xx = str.strsub(theader[i],0,11)
- if(xx=="Set-Cookie:")
- cookie&=str.strsub(theader[i],11,str.strleng(theader[i]))&";"
- endif
- endfor
- cookie=str.replace(cookie,";;",";")
- return cookie
- endfunction
- //
- function setIECookie(weburl,cookie)
- //BOOL InternetSetCookieEx( LPCTSTR lpszUrl, LPCTSTR lpszCookieName, LPCTSTR lpszCookieData, DWORD dwFlags, DWORD_PTR dwReserved);
- //ret=dllcall("wininet.dll","bool","InternetSetCookieExA","char*",weburl,"char *","qq","char *","0350910378","int",系统常量.INTERNET_COOKIE_THIRD_**,"int",0)
- tt
- str.split(cookie,";",tt)
- count
- arraysp.size(tt,count)
- for(i=0;i<(count-1);i++)
- tt1
- str.split(str.strtrim(tt[i]),"=",tt1)
- if(tt1[0]!="HttpOnly")
- ret=dllcall("wininet.dll","BOOL","InternetSetCookieA","char *",weburl,"char *",tt1[0],"char *",tt1[1])
- else
- ret=dllcall("wininet.dll","BOOL","InternetSetCookieA","char *",weburl,"char *",tt1[0],"char *","")
- endif
- 调试输出(i)
- endfor
-
- endfunction
- //获取网页打开的时间
- //参数1:网页地址
- //参数2:超时时间
- function getHtmlGetticktime(weburl,time)
- http=com("Msxml2.XMLHTTP")
- t=system.gettickcount()
- http.Open("get", weburl, false)
- http.setRequestHeader("Cache-Control","no-cache")
- http.send("")
- if(http.status == 200)
- http=null
- return system.gettickcount() - t
- endif
- while(http.status != 200)
- if((system.gettickcount() - t)>time)
- http=null
- return system.gettickcount() - t
- endif
- endwhile
-
- endfunction
- //获取北京时间
- function getNetTime()
- http=com("MSXML2.ServerXMLHTTP.3.0")
- http.Open("get","http: //open.baidu.com/special/time/", false)
- http.setRequestHeader("Cache-Control","no-cache")
- http.send("")
- ret=http.getResp**eHeader("Date")
- ret=str.strsub(ret,str.findstr(ret,",")+2,str.strleng(ret))
-
- day=str.strsub(ret,0,str.findstr(ret," "))
- ret=str.strsub(ret,str.findstr(ret," ")+1,str.strleng(ret))
- month=str.strsub(ret,0,str.findstr(ret," "))
- ret=str.strsub(ret,str.findstr(ret," ")+1,str.strleng(ret))
- year=str.strsub(ret,0,str.findstr(ret," "))
- ret=str.strsub(ret,str.findstr(ret," ")+1,str.strleng(ret))
- time=str.strsub(ret,0,str.findstr(ret," "))
- m
- select(month)
- case "Jan":
- m=1
- case "Feb":
- m=2
- case "Mar":
- m=3
- case "Apr":
- m=4
- case "May":
- m=5
- case "Jun":
- m=6
- case "Jul":
- m=7
- case "Aug":
- m=8
- case "Sep":
- m=9
- case "Oct":
- m=10
- case "Nov":
- m=11
- case "Dec":
- m=12
- endselect
- http=null
- return datetime.add("h",8,year&"/"&m&"/"&day&" "&time)
- endfunction
- //把二进制流转码
- function BytesToBstr(body,Cset="utf-8")
- // "UTF-8"
- //str
- //if(lenb(body)==0)
- //str = ""
- //否则
-
- traceprint(":创建对象Adodb.Stream---" & 日期时间.当前日期())
-
- objstream =com("Adodb.Stream") //报错 未知错误
- traceprint(":创建对象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
- //endif
- //标记1:
- return str
- endfunction
- //把网络上的文件下载到本地
- //参数1:文件地址
- //参数2:文件本地存放的地址
- function writeFile(weburl,path)
- http=com("WinHttp.WinHttpRequest.5.1")
- http.Open("get", weburl, false)
- http.setRequestHeader("Cache-Control","no-cache")
- http.send("")
- http.WaitForResp**e(5000)
- body=http.Resp**eBody
- http=null
- stream=com("ADODB.Stream")
- stream.Type = 1
- stream.Open
- stream.write(body)
- stream.saveToFile(path, 2)
- stream.Close
- stream=null
- endfunction
- //将一个文件以二进制的形式读取出来
- //存储在变量里面
- function readFile(path,&len="")
- ret
- stream=com("ADODB.Stream")
- stream.Type=1
- stream.Open
- stream.LoadFromFile(path)
- ret = stream.Read
- len=stream.Size
- stream.Close
- stream=null
- return ret
- endfunction
- //保存指定编码的文本
- function SaveTextFile(sFilePath,s,sCharset="utf-8")
- oStream=com("ADODB.Stream")
- //以文本模式
- oStream.Type=2
- oStream.Mode=3
- oStream.Charset=sCharset
- oStream.Open
- oStream.WriteText(s)
- oStream.SaveToFile(sFilePath, 2)
- oStream=null
- endfunction
- //.......
复制代码 |