Страницы: 1
RSS
Авторизация по методу HTTP Basic Auth, Провайдер изменил настройки, необходимо поменять их в коде.
 
Добрый день! Провайдер поменял настройки, необходимо поменять их в коде.

Так было -  "Для аутентификации пользователей API используются логин и пароль, передаваемые в
запросе в виде HTTP-параметров.
Доступ к API разрешен только с тех IP-адресов, которые указал клиент в интерфейсе
WebBSMS (если они указаны)."

Так стало - "Авторизационные данные передаются при каждом запросе.
Авторизация проходит по заголовку «Authorization:Basic
YTJwdGVzdF9zaWJpcjphMnB0ZXXX», где YTJwdGVzdF9zaWJpcjphMnB0ZXXX – это
login:pass в base64.
Под login и pass понимаются логин и пароль, получаемые клиентом в
настройках HTTP подключения"


Не могу понять как это поменять, т.к. не хватает познаний. Подскажите пожалуйста.
 
Код надо переписывать «с нуля»
Браузер IE тут не нужен
Примерно так надо:

Код
Sub BASIC()
    ' Макрос с BASIC авторизацией на сайте. © 2020 ExcelVBA.ru
    Dim RequestTimeout&, wHTTP As Object, Response$, URL$, tel$, textes$
    
    tel$ = "123"
    textes$ = "text"
    
    URL$ = URLEncode("https://newbsms.tele2.ru/api/?operation=send&login=ХХХХХХХХХ&password=ХХХХХХХХ&msisdn=" & tel & "&shortcode=ХХХХ&text=" & textes)
    
    RequestTimeout& = 6        ' таймаут (в секундах) ожидания ответа от сервера
    Set wHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
    
    With wHTTP
        ' открываем соединение
        .Open "GET", URL$, True
        
        ' добавляем заголовки запроса (возьмите их из браузера)
        .SetRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36"
        .SetRequestHeader "Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4"
        .SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
        
        ' добавляем заголовок авторизации
        .SetRequestHeader "Authorization", "Basic YTJwdGVzdF9zaWJpcjphMnB0ZXXX"
        
        .Send ' отправляем запрос
        
        If .WaitForResponse(RequestTimeout&) Then
            Response$ = .responsetext ' ответ сервера
            MsgBox Response$
        Else
            Debug.Print "Request Timeout (" & RequestTimeout & " seconds)", URL$        ' истекло время ожидания
        End If
    End With
    Set wHTTP = Nothing
End Sub

Function URLEncode(ByVal txt As String) As String
    For i = 1 To Len(txt)
        l = Mid(txt, i, 1)
        Select Case AscW(l)
            Case Is > 4095: t = "%" & Hex(AscW(l) \ 64 \ 64 + 224) & "%" & Hex(AscW(l) \ 64) & "%" & Hex(8 * 16 + AscW(l) Mod 64)
            Case Is > 127: t = "%" & Hex(AscW(l) \ 64 + 192) & "%" & Hex(8 * 16 + AscW(l) Mod 64)
            Case 32: t = "%20"
            Case Else: t = l
        End Select
        URLEncode = URLEncode & t
    Next
End Function
 
Спасибо, не получается. А почему IE не нужен? Этот файл с IE работал на любой машине.
Страницы: 1
Наверх