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

Ответить


Этот вопрос предназначен для предотвращения автоматической отправки форм спам-ботами.
Смайлики
:| :) :wink: :D :lol: :( :cry: 8) :o :oops: :? :x :P :evil: :twisted: :roll: :!: :?: :idea: :arrow: :mrgreen:
Ещё смайлики…

Markdown is OFF

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ВКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: VBS. Как создать и обработать HTTP GET запрос

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 КБ) 569 скачиваний

Примечание:

При работе через прокси, нужно указать адрес и порт прокси:

Код: Выделить всё

objHTTP.SetProxy 2, "192.168.1.1:3128"

и данные для авторизации (при необходимости):

Код: Выделить всё

objHTTP.SetCredentials "ProxyLogin", "ProxyPassword", 1

Вернуться к началу