Сделать HTTPS запрос на VBS
В интернете есть много решений данного вопроса, но мне подошел только этот. Так как мне нужно было получать файлы вложений по задачам Jira.
Прежде всего создадим переменные
userName = "user" userPass = "Pa$$word1" url = "https://test.txt"
Затем нам нужно будет создать объект MSXML2.ServerXMLHTTP
Set oXMLHTTP = CreateObject("MSXML2.ServerXMLHTTP")
Библиотека MSXML2 содержит в себе много объектов по которым можно работать как по протоколу HTTP так и HTTPS, но для нас будет оптимальней использование ServerXMLHTTP так как в нем можно установить таймаут.
Реализуем запрос следующим образом
oXMLHTTP.Open "GET", url, false, userName, userPass oXMLHTTP.setTimeouts 5000, 5000, 10000, 10000 'ms - resolve, connect, send, receive oXMLHTTP.setRequestHeader "Authorization", "Basic " + Base64Encode(userName + ":" & userPass) oXMLHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" oXMLHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" oXMLHTTP.Send ""
Как видно из примера кода запрос реализуется методом GET. Далее необходимо в заголовок HTTP запроса добавить параметр Authorization в котором значение должно будет передано в Base64, для этого можно использовать следующие функции
Function Base64Encode(inData) 'ripped from: 'http://www.pstruh.cz/tips/detpg_Base64Encode.htm 'rfc1521 '2001 Antonin Foller, PSTRUH Software, http://pstruh.cz Const Base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" Dim sOut, I 'For each group of 3 bytes For I = 1 To Len(inData) Step 3 Dim nGroup, pOut '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 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