UrlDownloadToVar()函数-下载到变量

分享一段从AHK中文论坛淘来的下载函数:UrlDownloadToVar():

UrlDownloadToVar(URL,Timeout=-1)    ;使用内置的UrlDownloadToFile命令,在多线程情况下,很容易出现线程退出了,文件却没正常下载的情况。在单进程情况下,很容易卡死在“牛杂网​”上。速度亦远慢于此函数
{
    ComObjError(0)
    WebRequest := ComObjCreate("WinHttp.WinHttpRequest.5.1")
    WebRequest.Open("GET", URL, true)   ;true为异步获取,默认是false,卡顿的根源!
    WebRequest.Send()
    WebRequest.WaitForResponse(Timeout) ;修改为异步获取后,平均获取网页速度大幅加快,故不再采用超时(Timeout=-1)。在访问ResponseText之前调用WaitForResponse方法以确保获取的是完整的响应
    Return WebRequest.ResponseText()
            , ComObjError(0)
}

函数特点(作者自述):

此函数与内置命令UrlDownloadToFile的区别有以下几点
1.直接下载到变量,没有临时文件
2.下载速度快过内置命令,大概快了100%
3.支持TIMEOUT,N秒没有下载完成可以直接返回,不必死等
4.内置命令执行时,整个AHK程序都是卡顿状态,此函数不会
5.内置命令下载一些诡异网站时,会概率性让进程或线程卡死,不是假死,是真的死掉。此函数不会

论坛地址:http://ahk8.com/Thread-UrlDownloadToVar-%E4%B8%8B%E8%BD%BD%E5%88%B0%E5%8F%98%E9%87%8F-%E4%B8%8D%E4%BC%9A%E5%8D%A1-%E4%B8%8D%E4%BC%9A%E6%AD%BB-%E6%94%AF%E6%8C%81%E8%B6%85%E6%97%B6-%E9%80%9F%E5%BA%A6%E5%BF%AB

posted @ 2013-12-02 12:58  cui-YF  阅读(751)  评论(0编辑  收藏  举报