与VBScript中的DefaultCredentials等效
我有一个VBScript文件,它向URL发出GET请求:与VBScript中的DefaultCredentials等效,vbscript,Vbscript,我有一个VBScript文件,它向URL发出GET请求: Dim o Set o = CreateObject("MSXML2.XMLHTTP") o.open "GET", "http://www...", False o.send 我不熟悉VBScript。在C#中,我将在web服务对象上使用CredentialCache.DefaultCredentials,将凭据与此请求一起传递。如何在VBScript中执行相同的操作 谢谢 据我所知,MSXML2不支持这一点。您可以尝试使用以
Dim o
Set o = CreateObject("MSXML2.XMLHTTP")
o.open "GET", "http://www...", False
o.send
我不熟悉VBScript。在C#中,我将在web服务对象上使用CredentialCache.DefaultCredentials
,将凭据与此请求一起传递。如何在VBScript中执行相同的操作
谢谢 据我所知,MSXML2不支持这一点。您可以尝试使用以下工具自动化Internet Explorer:
CreateObject("InternetExplorer.Application")
我知道IE可以通过集成身份验证传递您的凭据。然而,使用IE和VBScript往往会导致非常不一致的结果,因此,如果这是一项要求,并且您有选择权,我建议您坚持使用C。看起来您需要的是setRequestHeader() 我使用以下代码:
dim xmlhttp : set xmlhttp = createobject("microsoft.xmlhttp")
xmlhttp.open "post", url, false
xmlhttp.setRequestHeader "Authorization", "Basic " & passcode
xmlhttp.setRequestHeader "Content-Type","application/x-www-form-urlencoded"
xmlhttp.send(postdata)
passcode是username:password的base64编码字符串
我使用下面的base64函数
Function Base64Encode(inData)
'rfc1521
'2001 Antonin Foller, Motobit Software, http://Motobit.cz
Const Base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
Dim cOut, sOut, I
'For each group of 3 bytes
For I = 1 To Len(inData) Step 3
Dim nGroup, pOut, sGroup
'Create one long from this 3 bytes.
nGroup = &H10000 * Asc(Mid(inData, I, 1)) + _
&H100 * MyASC(Mid(inData, I + 1, 1)) + MyASC(Mid(inData, I + 2, 1))
'Oct splits the long To 8 groups with 3 bits
nGroup = Oct(nGroup)
'Add leading zeros
nGroup = String(8 - Len(nGroup), "0") & nGroup
'Convert To base64
pOut = Mid(Base64, CLng("&o" & Mid(nGroup, 1, 2)) + 1, 1) + _
Mid(Base64, CLng("&o" & Mid(nGroup, 3, 2)) + 1, 1) + _
Mid(Base64, CLng("&o" & Mid(nGroup, 5, 2)) + 1, 1) + _
Mid(Base64, CLng("&o" & Mid(nGroup, 7, 2)) + 1, 1)
'Add the part To OutPut string
sOut = sOut + pOut
'Add a new line For Each 76 chars In dest (76*3/4 = 57)
'If (I + 2) Mod 57 = 0 Then sOut = sOut + vbCrLf
Next
Select Case Len(inData) Mod 3
Case 1: '8 bit final
sOut = Left(sOut, Len(sOut) - 2) + "=="
Case 2: '16 bit final
sOut = Left(sOut, Len(sOut) - 1) + "="
End Select
Base64Encode = sOut
End Function
Function MyASC(OneChar)
If OneChar = "" Then MyASC = 0 Else MyASC = Asc(OneChar)
End Function