替代UrlDownloadToFile

编程入门 行业动态 更新时间:2024-10-26 10:31:26
本文介绍了替代UrlDownloadToFile的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 UrlDownloadToFile是AutoHotkey中的一个不错的命令,大部分时间都可以正常工作,但有时下载机制太复杂了。例如,如果下载需要设置特定的用户代理,或者下载需要cookie或甚至密码。

所以问题是: 是否有更高级的下载功能,可以处理上述所有内容?

解决方案

前一段时间以为这是一个很好的主意,把它放在一个函数中,并在这里发布:

下载(UrlToFile ,SaveFileAs:=,覆盖:= True,headers:=,方法:=GET,postData:=){ WinHttpObj:= ComObjCreate(WinHttp.WinHttpRequest.5.1 b $ b WinHttpObj.Open(方法,UrlToFile)标题中的值 WinHttpObj.SetRequestHeader(头,值) WinHttpObj.Send(postData) ADODBObj:= ComObjCreate(ADODB.Stream) ADODBObj.Type:= 1 ADODBObj.Open() ADODBObj.Write(WinHttpObj.ResponseBody)如果!SaveFileAs { urlSplitArra y:= StrSplit(UrlToFile,/) SaveFileAs:= urlSplitArray [urlSplitArray.MaxIndex()] } ADODBObj.SaveToFile(SaveFileAs,Overwrite? 2:1) ADODBObj.Close()}

示例1

下载(ahkscript/download/1.1/AutoHotkey111402_Install.exe)

示例2

customHeaders:= {User-Agent:Mozilla / 5.0(Windows NT 6.3; WOW64; rv:37.0)Gecko / 20100101 Firefox / 37.0,缓存控制:max-age = 0,Cookie:downloadtoken = b82416fdb23e421fb5a} 下载(download.piriform/ccsetup410.exe ,True,customHeaders)

示例3

下载(foo.bar/example.exe,example.exe,True,{Cookie:sessionid = abc123},POST,username = foo_bar& password = qwerty)

UrlDownloadToFile is a nice command in AutoHotkey and works just fine, most of the time, but sometimes a download mechanism is too complex for it. For example if the download requires a specific user-agent to be set or if the download requires a cookie or maybe even a password.

So the question is: Is there a more advanced download function, which could handle all of the above said?

解决方案

I wrote this quite some time ago and thought it would be a nice idea to wrap it up in a function and post it here:

Download(UrlToFile,SaveFileAs:="",Overwrite:=True,headers:="",method:="GET",postData:="") { WinHttpObj := ComObjCreate("WinHttp.WinHttpRequest.5.1") WinHttpObj.Open(method, UrlToFile) For header, value in headers WinHttpObj.SetRequestHeader(header, value) WinHttpObj.Send(postData) ADODBObj := ComObjCreate("ADODB.Stream") ADODBObj.Type := 1 ADODBObj.Open() ADODBObj.Write(WinHttpObj.ResponseBody) If !SaveFileAs { urlSplitArray := StrSplit(UrlToFile, "/") SaveFileAs := urlSplitArray[urlSplitArray.MaxIndex()] } ADODBObj.SaveToFile(SaveFileAs, Overwrite ? 2:1) ADODBObj.Close() }

Example 1

Download("ahkscript/download/1.1/AutoHotkey111402_Install.exe")

Example 2

customHeaders := {"User-Agent": "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0" ,"Cache-Control": "max-age=0" ,"Cookie": "downloadtoken=b82416fdb23e421fb5a"} Download("download.piriform/ccsetup410.exe","",True,customHeaders)

Example 3

Download("foo.bar/example.exe","example.exe",True,{"Cookie":"sessionid=abc123"},"POST","username=foo_bar&password=qwerty")

更多推荐

替代UrlDownloadToFile

本文发布于:2023-05-27 02:46:07,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/275029.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:UrlDownloadToFile

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!