Для начала необходимо разобраться
как происходит отправка sms через инернет. Вы вводите номер телефона и текст
сообщения, а затем отправляете. Через некоторое время сообщение будет доставлено
адресату. Разные GSM операторы по-разному обрабатывают сообщения, у всех разные
системы отправки, скрипты. Но целом, все одинаково. так, мы решили написать
программу для отправки sms черезprocedure SendToMTS;
Интернет. Визуальную часть проектирования касаться не будем, а посмотрим как
сформировать пакет для отправки оператору. Для примера возьмем МТС. Вся
информация (номер телефона, текст сообщения, крайние время отправки) отсылается
следующему скрипту:
http://www.mts.ru/cgi-bin/cgi.exe?function=sms_send
Информация хранится в следующих полях:
To= // номер телефона, вида 7xxxxxxxxxx
Msg= // текст сообщения
Hour=,Min=,Day=,Mon=,Year= // крайние время отправки сообщения
Теперь несложно написать процедуру отправки сообщения:
var
strPostData: string;
Data: Pointer;
URL, Flags, TargetFrameName, PostData, Headers: OleVariant;
begin
strPostData := 'To='+PhoneNumField.text+'&Msg='
+ TextField.Text +
'&Hour=20&Min=23&Day=22&Mon=02&Year=2002';
PostData := VarArrayCreate([0,Length(strPostData) -1], varByte);
Data := VarArrayLock(PostData);
try
Move(strPostData[1], Data^, Length(strPostData));
finally
VarArrayUnlock(PostData);
end;
URL:='http://www.mts.ru/cgi-bin/cgi.exe?function=sms_send';
Flags := EmptyParam;
TargetFrameName := EmptyParam;
Headers := EmptyParam; // TWebBrowser автоматически заполнит
// эти заголовки соответствующими
// значениями
form1.WebBrowser1.Navigate2(URL, Flags,
TargetFrameName, PostData, Headers);
end;
Все, что нам нужно это поместить на форму компоненту
TWebbrowser. Через него и будет происходить отправка. Давайте теперь разберемся
в том, что мы написали. Переменная strPostData хранит наименование полей и их
содержимое в виду обычной строки. Но для корректной работы, мы должны
преобразовать строку в нормальный вид. Всю информация мы преобразовали в
переменную PostData. Переменной URL указываем путь к исполняемому скрипту; Flags
оставим пустым, т.к. мы не будем открывать ни сайта, ни каких-то страниц;
TargetFrameName также пуст; заголовки для пакета оставляем пустым, т.к
компонента сама их заполнит и МТС не требует никакой верификации (как билайн,
например). Конечным действием вызываем процедуру Navigate2 и отправляем
сообщение. Описывать как заполнять поля время/дата не буду, т.к это очень
просто.
P.S: Также стоит заметить, что разные операторы
используют разные методы отправки (GET или POST). В нашем примере мы
использовали метод POST. Если необходимо использовать GET, то просто оставьте
значение переменной PostData пустым.
|