Эквивалент DefaultCredentials в VBScript - PullRequest
0 голосов
/ 15 марта 2012

У меня есть файл VBScript, который отправляет запрос GET на URL:

Dim o 
Set o = CreateObject("MSXML2.XMLHTTP") 
o.open "GET", "http://www...", False 
o.send 

Я новичок в VBScript.В C # я бы использовал CredentialCache.DefaultCredentials для объекта веб-службы для передачи учетных данных вместе с этим запросом.Как я могу сделать то же самое в VBScript?

Спасибо!

Ответы [ 2 ]

1 голос
/ 27 марта 2012

Похоже, что вам нужно, это setRequestHeader ().http://msdn.microsoft.com/en-us/library/ms536752(v=vs.85).aspx

Я использую следующий код:

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)

пароль - это строка имени пользователя в кодировке 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
1 голос
/ 15 марта 2012

Насколько мне известно, MSXML2 не поддерживает это. Вы можете попробовать автоматизировать Internet Explorer с помощью:

CreateObject("InternetExplorer.Application")

Я знаю, что IE может передавать ваши учетные данные через встроенную аутентификацию. Однако работа с IE и VBScript имеет тенденцию заканчиваться очень противоречивыми результатами, поэтому я советую придерживаться C #, если это является требованием, и у вас есть возможность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...