Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2011, 20:28   #1
Coder12
Пользователь
 
Регистрация: 21.03.2011
Сообщений: 22
По умолчанию Отправка смс на теле2

хочу сделать программу для отпраки смс на номера абонентов брянской обл.
вот что я написал:
Код:

var
  Form1: TForm1;
  params:TStringList;
  memo:TMemoryStream;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo := TMemoryStream.Create;
http1.Get('http://www.sms.tele2.ru/get_rni.php?public_key=c61d24d8bb81741c8328d4df3b49997f.jpg',Memo);
//http1.Disconnect;
Memo.SaveToFile('c:\image.png');
Memo.Free;
Image1.Picture.LoadFromFile('c:\image.png');
params:=TStringList.Create;
params.Add('phone_code=***');
params.Add('number=*******');
params.Add('sms_text=Работает');
params.Add('private_key='+edit1.text);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
http1.Post('http://www.bryansk.tele2.ru/send_sms.html',params);
params.Free;
http1.Free;
end;
end.
при проверке сообщение мне не приходит Исправте ошибки
вот адрес страницы http://www.bryansk.tele2.ru/send_sms.html
Coder12 вне форума Ответить с цитированием
Старый 10.04.2011, 21:13   #2
Usov
Форумчанин
 
Аватар для Usov
 
Регистрация: 29.09.2009
Сообщений: 228
По умолчанию

1. Сначало надо зайти просто на сайт для того чтоб кукименеджер получил кукисы
2. Значение параметра public_key необходимо парсить с запроса а не подставлять статиком
3. Отправка формы идет на адрес http://www.sms.tele2.ru/ а не на http://www.bryansk.tele2.ru/send_sms.html
4. Список парметров, которые передает броузер такой:
Код:
do=send&
smstext=ttt&
phone_code=902&
number=2345678&
sms_text=ttt&
private_key=313793&
public_key=b48262741862d91bcf6617489cd45ac4&
submit.x=54&
submit.y=12&
submit=%D0%9E%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D1%82%D1%8C
сабмиты наверное можно упустить.

А теперь проанализируй свой код.
Рекомендую пользоваться сниферов в броузере чтоб видеть чего и куда реально передается.

Последний раз редактировалось Usov; 10.04.2011 в 21:15.
Usov вне форума Ответить с цитированием
Старый 10.04.2011, 21:20   #3
Coder12
Пользователь
 
Регистрация: 21.03.2011
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Usov Посмотреть сообщение
2. Значение параметра public_key необходимо парсить с запроса а не подставлять статиком
не совсем понял
Подскажите хороший снифер

Последний раз редактировалось Coder12; 10.04.2011 в 21:23.
Coder12 вне форума Ответить с цитированием
Старый 11.04.2011, 20:38   #4
Coder12
Пользователь
 
Регистрация: 21.03.2011
Сообщений: 22
По умолчанию

Исправил код, тк предыдущий отправлял значение private_key=edit1.text;
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo := TMemoryStream.Create;
responseres:=TStringList.Create;
http1.Get('http://www.sms.tele2.ru/get_rni.php?public_key=c61d24d8bb81741c8328d4df3b49997f.jpg',Memo);
Memo.SaveToFile('c:\image.png');
Memo.Free;
Image1.Picture.LoadFromFile('c:\image.png');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
params:=TStringList.Create;
params.Add('phone_code=952');
params.Add('number=9671374');
params.Add('sms_text=Работает');
params.Add('private_key='+edit1.text);
responseres.Text:=http1.Post('http://www.sms.tele2.ru/',params);
params.Free;
http1.Free;
end;
end.
Теперь отправляет правильно значения, проверил снифером. Подскажите пожалуйста по поводу 1 и 2 пункта.
Изображения
Тип файла: jpg TELE.JPG (21.6 Кб, 93 просмотров)
Coder12 вне форума Ответить с цитированием
Старый 11.04.2011, 21:51   #5
Usov
Форумчанин
 
Аватар для Usov
 
Регистрация: 29.09.2009
Сообщений: 228
По умолчанию

Положи на форму компонент TCookieManager и проставь соответствующее свойство в TIdHTTP. Потом в начале своей процедуры делаешь запрос к сайту http://www.sms.tele2.ru/, в результате получишь исходник страницы откуда надо выкусить (спарсить) то что находиться тут
Код:
<input type=hidden name='public_key' id='public_key' value='2ac519b1a49f8921fd2d68d1cb522cc5'>
, а точнее значение и подставить его в твой пост запрос отправки смс. И с этого же исходника парсишь ссылку на картинку.
Usov вне форума Ответить с цитированием
Старый 11.04.2011, 22:22   #6
Coder12
Пользователь
 
Регистрация: 21.03.2011
Сообщений: 22
По умолчанию

Usov спасибо большое, буду дальше разбираться
Coder12 вне форума Ответить с цитированием
Старый 12.04.2011, 13:27   #7
Coder12
Пользователь
 
Регистрация: 21.03.2011
Сообщений: 22
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo := TMemoryStream.Create;
responseres:=TStringList.Create;
Memo1.Lines.Add(HTTP1.Get('http://www.sms.tele2.ru/'));
s:=memo1.Lines.Text;
delete(s,1,100);
s2:=copy(s,pos('get_rni.php',s)+131,79);
label1.caption:=s2;
s2:=s2+'.jpg';
showmessage(s2);
http1.Get(s2,Memo);
Memo.SaveToFile('c:\image.png');
Memo.Free;
Image1.Picture.LoadFromFile('c:\image.png');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
HTTP1.Request.AcceptCharSet:='windows-1251';
s:=memo1.Lines.Text;
s1:=copy(s,pos('public_key',s)+35,32);
label2.caption:=s1;
params:=TStringList.Create;
params.Add('do=send');
params.Add('smstext=Работает1');
params.Add('phone_code=952');
params.Add('number=9671374');
params.Add('sms_text=Работает1');
params.Add('private_key='+edit1.text);
params.Add('public_key='+s1);
params.Add('submit=Отправить');
responseres.Text:=http1.Post('http://www.sms.tele2.ru/',params);
params.Free;
http1.Free;
end;
end.
подключил TCookieManager, добавил значения do, smstext ( как браузер посылает пост запрос). Так же заметил, что номер картинки в ссылке совпадает со значением value (в браузере). Сделал также у себя в программе. Но она как не отправляла смс так и не отправляет. Что можете подсказать? Вылаживаю исходник
Вложения
Тип файла: rar отправка смс теле2.rar (242.9 Кб, 36 просмотров)
Coder12 вне форума Ответить с цитированием
Старый 12.04.2011, 18:09   #8
Usov
Форумчанин
 
Аватар для Usov
 
Регистрация: 29.09.2009
Сообщений: 228
По умолчанию

Смотри что броузер отправляет:
Код:
do=send&smstext=test&phone_code=902&number=123467&sms_text=test&private_key=878429&public_key=5e7781438b17e32069792ff031822fd3&submit.x=20&submit.y=13
Попробуй текст вводить на латинице (при отладке).
С виду вроде все правильно у тебя.
Usov вне форума Ответить с цитированием
Старый 13.04.2011, 00:09   #9
Coder12
Пользователь
 
Регистрация: 21.03.2011
Сообщений: 22
По умолчанию

а за что отвечает submit.x=20&submit.y=13? может тоже передавать? только не пойму как определять
Coder12 вне форума Ответить с цитированием
Старый 13.04.2011, 01:07   #10
Usov
Форумчанин
 
Аватар для Usov
 
Регистрация: 29.09.2009
Сообщений: 228
По умолчанию

В большинстве случаев сабмиты не обязательно передавать, в данном случае если хочешь то просто константой забей.
Usov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправка смс gamer123 Работа с сетью в Delphi 6 08.04.2011 12:30
Отправка СМС. vanandr91 Microsoft Office Excel 2 08.11.2010 17:34
Отправка СМС на теле2 Namolem Помощь студентам 1 26.09.2010 09:42
Отправка СМС на теле2 Namolem Помощь студентам 0 22.09.2010 23:47
Отправка СМС. doniyor Работа с сетью в Delphi 1 12.01.2009 14:03