Alexander A Manaeff -

 
 

VBS. Как создать и обработать HTTP GET запрос

Здесь обсуждаются вопросы по программированию на Visual Basic.

Модератор: UncleFather

VBS. Как создать и обработать HTTP GET запрос

Сообщение UncleFather » 16 июн 2016 21:00, Чт

Задача:

Необходимо создать HTTP GET запрос и обработать его результаты из скрипта VBS.




Решение:

Выполним запрос и разбор ответа на примере отправки SMS через сервис sms.ru.
Данный портал предоставляет возможность отправки до 6-ти бесплатных SMS в сутки. К тому же тарифы там очень демократичные. Плюс отсутствие задержки SMS-ок. И еще плюс - большое количество способов отправки:
  • HTTP
  • curl для командной строки (UTF-8)
  • php (с включенным модулем curl)
  • php (без curl)
  • php (усиленная авторизация)
  • PERL (усиленная авторизация)
  • Python
Все подробно разжевано на сайте, все методы расписаны, все очень доходчиво.

Итак, скрипт. Он отправляет GET HTTP запрос в формате данного портала и анализирует ответы, опять же, в соответствии с описанием на sms.ru.

В результате, имеем sms на указанный номер и анализ ответа сервиса во всплывающем окне.

Для того, чтобы скрипт у Вас заработал, необходимо:

  1. Зарегистрироваться на портале sms.ru
  2. Получить ключ api_id
  3. Вставить полученный ключ в скрипт, в поле api_id, вместо XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
  4. Вставить телефонный номер получателя SMS в скрипт, в поле to, вместо 79XXXXXXXXX

 Код VBS-сценария:
Код: Выделить всё
'Определяем переменные и создаем объект WinHttp.WinHttpRequest.5.1

Dim objHTTP, strHTML, intStart, intEnd
    Set objHTTP = CreateObject( "WinHttp.WinHttpRequest.5.1" )

'Создаем и отправляем запрос, согласно синтаксису принимающей стороны. В нашем примере - запрос для сервиса sms.ru
    objHTTP.Open "GET", "http://sms.ru/sms/send?api_id=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&to=79XXXXXXXXX&text=hello+world", False
    objHTTP.Send

'Обрабатываем код статуса ответа на запрос. Если он соотвтетсвует "200" (OK), то начинаем разбор текста ответа
    If objHTTP.Status = 200  Then
   Select Case Trim(objHTTP.ResponseText)
      Case "200"
         strHTML = "Неправильный api_id"
      Case "201"
         strHTML = "Не хватает средств на лицевом счету"
      Case "202"
         strHTML = "Неправильно указан получатель"
      Case "203"
         strHTML = "Нет текста сообщения"
      Case "204"
         strHTML = "Имя отправителя не согласовано с администрацией"
      Case "205"
         strHTML = "Сообщение слишком длинное (превышает 8 СМС)"
      Case "206"
         strHTML = "Будет превышен или уже превышен дневной лимит на отправку сообщений"
      Case "207"
         strHTML = "На этот номер (или один из номеров) нельзя отправлять сообщения, либо указано более 100 номеров в списке получателей"
      Case "208"
         strHTML = "Параметр time указан неправильно"
      Case "209"
         strHTML = "Вы добавили этот номер (или один из номеров) в стоп-лист"
      Case "210"
         strHTML = "Используется GET, где необходимо использовать POST"
      Case "211"
         strHTML = "Метод не найден"
      Case "212"
         strHTML = "Текст сообщения необходимо передать в кодировке UTF-8 (вы передали в другой кодировке)"
      Case "220"
         strHTML = "Сервис временно недоступен, попробуйте чуть позже."
      Case "230"
         strHTML = "Сообщение не принято к отправке, так как на один номер в день нельзя отправлять более 60 сообщений."
      Case "300"
         strHTML = "Неправильный token (возможно истек срок действия, либо ваш IP изменился)"
      Case "301"
         strHTML = "Неправильный пароль, либо пользователь не найден"
      Case "302"
         strHTML = "Пользователь авторизован, но аккаунт не подтвержден (пользователь не ввел код, присланный в регистрационной смс)"
      Case Else
         If Instr(1,Trim(objHTTP.ResponseText),"100") Then
            strHTML = "Сообщение принято к отправке"
         Else
            strHTML = "Недокументированный ответ"
         End If
   End Select

'Если код статуса ответа не соотвтетсвует "200" (OK), возвращаем пустую строку
    Else
     strHTML = ""
   
    End If

    Set objHTTP = Nothing

    MsgBox strHTML


Скачать архив со скриптом можно здесь:
Http-Get.rar
(2.31 КБ) Скачиваний: 170




Примечание:

При работе через прокси, нужно указать адрес и порт прокси:
Код: Выделить всё
objHTTP.SetProxy 2, "192.168.1.1:3128"

и данные для авторизации (при необходимости):
Код: Выделить всё
objHTTP.SetCredentials "ProxyLogin", "ProxyPassword", 1
Аватара пользователя
UncleFather
Site Admin
 
Сообщения: 1325
Зарегистрирован: 17 авг 2004 16:20, Вт

Вернуться в Visual Basic

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Alexander A Manaeff -
@Mail.ru .