Задача:
Необходимо создать 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 на указанный номер и анализ ответа сервиса во всплывающем окне.
Для того, чтобы скрипт у Вас заработал, необходимо:
-
Зарегистрироваться на портале sms.ru
-
Получить ключ api_id
-
Вставить полученный ключ в скрипт, в поле api_id, вместо XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
-
Вставить телефонный номер получателя 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
Скачать архив со скриптом можно здесь:
Примечание:
При работе через прокси, нужно указать адрес и порт прокси:
Код: Выделить всё
objHTTP.SetProxy 2, "192.168.1.1:3128"
и данные для авторизации (при необходимости):
Код: Выделить всё
objHTTP.SetCredentials "ProxyLogin", "ProxyPassword", 1