2012-08-27 90 views
2

我有一個腳本能夠從https://mysite.com/xxx.zip下載文件,但是當它進入安全鏈接時,我想接受證書。這裏有一個很大的問題。我無法有效地使用「ServicePointManager.ServerCertificateValidationCallback」。如何使用HTTPS連接使用VBSCRIPT下載文件並接受所有證書

任何人都可以請幫忙嗎?

我也有證書的網站域名:* .mysite.com

代碼:

Const scriptVer = "1.0" 
Const DownloadDest = "https://mysite.com/xxx.zip" 
Const LocalFile = "F:\Testing\xxx.zip" 
Const webUser = "admin" 
Const webPass = "admin" 
Const DownloadType = "binary" 
dim strURL 

function getit() 
    dim xmlhttp 

    set xmlhttp=createobject("MSXML2.XMLHTTP.3.0") 
    'xmlhttp.SetOption 2, 13056 'If https -> Ignore all SSL errors 
    strURL = DownloadDest 
    Wscript.Echo "Download-URL: " & strURL 

    'For basic auth, use the line below together with user+pass variables above 
    xmlhttp.Open "GET", strURL, false, WebUser, WebPass 
    'xmlhttp.Open "GET", strURL, false 

    xmlhttp.Send 
    Wscript.Echo "Download-Status: " & xmlhttp.Status & " " & xmlhttp.statusText 

    If xmlhttp.Status = 200 Then 
    Dim objStream 
    set objStream = CreateObject("ADODB.Stream") 
    objStream.Type = 1 'adTypeBinary 
    objStream.Open 
    objStream.Write xmlhttp.responseBody 
    objStream.SaveToFile LocalFile 
    objStream.Close 
    set objStream = Nothing 
    End If 


    set xmlhttp=Nothing 
End function 

'======================================================================= 
' End Function Defs, Start Main 
'======================================================================= 
' Get cmdline params and initialize variables 
If Wscript.Arguments.Named.Exists("h") Then 
    Wscript.Echo "Usage: http-download.vbs" 
    Wscript.Echo "version " & scriptVer 
    WScript.Quit(intOK) 
End If 

getit() 
Wscript.Echo "Download Complete. See " & LocalFile & " for success." 
Wscript.Quit(intOK) 

ServicePointManager.ServerCertificateValidationCallback = AddressOf AcceptAllCertifications 

Private Shared Function ValidateCertificate(sender As Object, certificate As X509Certificate, chain As X509Chain, sslPolicyErrors As SslPolicyErrors) As Boolean 
    return True 
End Function 

回答

2

ServicePointManager是一個.NET類,所以它不能在VBScript使用。試試這個:

Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP") 
xmlhttp.setOption 2, 13056 

必須使用MSXML2.ServerXMLHTTP在這裏,因爲MSXML2.XMLHTTP請求沒有setOption方法。

也許你不應該broadcast你的問題。這不是很有禮貌。

相關問題