4
UrlDownloadToFile在AutoHotkey中是一个很好的命令,在大多数情况下工作得很好,但有时下载机制对于它来说太复杂了。例如,如果下载需要设置特定的用户代理,或者下载需要cookie或甚至密码。UrlDownloadToFile的替代
所以问题是:
是否有更高级的下载功能,可以处理上述所有的说法?
UrlDownloadToFile在AutoHotkey中是一个很好的命令,在大多数情况下工作得很好,但有时下载机制对于它来说太复杂了。例如,如果下载需要设置特定的用户代理,或者下载需要cookie或甚至密码。UrlDownloadToFile的替代
所以问题是:
是否有更高级的下载功能,可以处理上述所有的说法?
我这个前一段时间写的,并认为这将是一个不错的主意,把它包起来的函数,它张贴在这里:
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()
}
例1
Download("http://ahkscript.org/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"
,"Cache-Control": "max-age=0"
,"Cookie": "downloadtoken=b82416fdb23e421fb5a"}
Download("http://download.piriform.com/ccsetup410.exe","",True,customHeaders)
例3
Download("http://foo.bar/example.exe","example.exe",True,{"Cookie":"sessionid=abc123"},"POST","username=foo_bar&password=qwerty")
非常感谢您的努力。您对ahk网络的贡献非常受欢迎:) – Blauhirn 2015-04-06 10:41:48
我认为你最近的帖子是非常有用的。请将它们发布在ahkscript.org – vasili111 2015-04-05 19:24:30
谢谢。 :)你可以在那里找到大部分。他们往往很难找到,因为不是所有人都有专用线程,其中一些在autohotkey.com上,有些在ahkscript.org上。我将它们以“Bruttosozialprodukt”的名义发布。例如:http://www.autohotkey.com/board/topic/101007-super-simple-download-with-progress-bar/#post_id_632780 – Forivin 2015-04-05 19:31:31
不久将会有autohotkey.com和ahkscript.org的合并。目前的autohotkey.com论坛将成为只读,而在ahkscript.org的论坛将转到autohotkey.com并且处于活动状态。你真的有很多好的和有用的脚本,并使它们易于搜索。我认为最好在ahkscript.org为每个脚本分别创建一个线程。 – vasili111 2015-04-06 07:20:51