2015-12-18 36 views
1

我試圖使用需要驗證的VBScript下載ZIP文件。如果您訪問該網站,您會注意到它會彈出一個身份驗證提示。我遇到的問題是這個腳本運行後,ZIP文件太小了,它應該是什麼,並已損壞,所以我無法打開它。在網站上下載需要使用VBScript驗證的zip文件

我的想法是下載不起作用。

有人看到我在做什麼錯了嗎?

strHDLocation = "C:\Test\file1.zip" 
Set xmlHttp = CreateObject("Microsoft.XMLHTTP") 

xmlHttp.Open "GET", "http:downloadsite/report-id=123456", False, "myidhere", "mypwhere" 
xmlHttp.Send() 


Set objADOStream = CreateObject("ADODB.Stream") 
objADOStream.Open 
objADOStream.Type = 1 'adTypeBinary 

objADOStream.Write xmlHttp.ResponseBody 
objADOStream.Position = 0 'Set the stream position to the start 

Set objFSO = Createobject("Scripting.FileSystemObject") 
If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation 
Set objFSO = Nothing 

objADOStream.SaveToFile strHDLocation 
objADOStream.Close 
Set objADOStream = Nothing 
+0

在處理'xmlHttp.ResponseBody'之前檢查'xmlHttp.ReadyState = 4'。同時檢查'xmlHttp.Status'以確保你得到一個'200'的HTTP響應。 – Lankymart

+0

所以我應該循環,直到它的值爲4?我以爲發送被阻止?我做到了,在Send()之後它是4,但仍然是同樣的問題。 – user441521

+0

你將它設置爲不是異步,所以應該阻止,但可能發生的事情我總是發現最好檢查,無論它是否是異步。這很可能是服務器返回一個錯誤,雖然這就是爲什麼我建議檢查'xmlHttp.Status'。 – Lankymart

回答

1

作爲最低限度使用IXmlHttpRequest時,你應該檢查Status屬性,以確保假設不是返回什麼完成。

If xmlHttp.Status = 200 Then 
    'Successful Request 
Else 
    'Something went wrong 
End If 

很可能請求失敗的原因之一或其他與ResponseBody包含故障響應不是預期的ZIP文件。