![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Отправка SMS на Биллайн [D7, XP]
Viktop © (2006-09-02 08:02:00)Пытаюсь отправить SMS на Биллайн с помощью компонентов Indy.
Небольшое отступление. Для Firefox есть расширение xSMS. Оно позволяет отправлять SMS. Если отправлять на биллайн через их сайт, то надо вводить код, указанный на картинке. Если через xSMS (или их программу [официальная программа для отправки SMS от Биллайна]), то ничего вводить не надо. С помощью сниффера узнал заголовки отправляемого запроса.
http://www.beeonline.ru/servlet/send/sms/
POST /servlet/send/sms/ HTTP/1.1
Host: www.beeonline.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 87
Pragma: no-cache
Cache-Control: no-cache
number_sms=number_sms_send&termtype=G&x=5&y=4&prf=7909&phone=номер_телефона&mess age=Krosavcheg
HTTP/1.x 200 OK
Date: Sat, 02 Sep 2006 03:38:54 GMT
Server: Apache/2.0.49 (Linux/SuSE)
Cache-Control: private
Vary: Accept-Encoding
Content-Length: 25
Set-Cookie: JSESSIONID=axxl6HTg3QQg; path=/
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/plain;charset=windows-1251
В Delphi прописал такой код:
var
aStream: TMemoryStream;
Params: TStringStream;
LongStr: string;
begin
with IdHTTP1 do
begin
aStream := TMemoryStream.Create;
Params := TStringStream.Create('');
HandleRedirects := True;
Host := 'beonline.ru';
Request.UserAgent := 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.6)';
Request.Accept := 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5';
Request.AcceptLanguage := 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3';
Request.AcceptEncoding := 'gzip,deflate';
Request.AcceptCharSet := 'windows-1251,utf-8;q=0.7,*;q=0.7';
Request.Connection := 'keep-alive';
Request.CacheControl:='no-cache';
Request.ContentType := 'application/x-www-form-urlencoded';
Request.Connection := 'Close';
Request.Pragma := 'no-cache';
LongStr := 'number_sms=number_sms_send&termtype=G&x=5&y=4&prf=7909&phone=Номер_телефона&mes sage=Krosavcheg';
Params.WriteString((LongStr));
IdHTTP.Post(' http://www.beeonline.ru/servlet/send/sms/', Params, Stream);
aStream.SaveToFile('C:\BOL.html');
aStream.Free;
Params.Free;
end;
end;
В результате на диске C: создаётся файл BOL.html с текстом Ошибка при отправке сообщения.
Viktop (2006-09-06 17:25:00) [1]to Tisso
Мне пока не горит такой функционал, но если разберёшься, то черкани на vic87 на mail.ruили в аську 6155601. Буду премного благодарен ;)
Tisso (2006-09-06 08:46:00) [2]Чтобы отслеживать статус доставки, чтобы отправлять отложенные сообщения. Много всего.. Но самое главное это статус доставки..
Viktop (2006-09-06 05:58:00) [3]
> Проблема, с которой я сталкнулся, это что при отправке в
> ответ получаю "Внимание!!! Неверно указан код подтверждения
> отправки.". Не знаю как это решить пока.. В чем именно проблема
> я знаю.
А если мой код рабочий, то зачем пытаться подгрузить картинку?
Viktop (2006-09-06 05:57:00) [4]Блин, понял в чём была ошибка. У меня на форме несколько компонентов IdHTTP.
Проблема была в строчке IdHTTP.Post(' http://www.beeonline.ru/servlet/send/sms/', Params, Stream)Надо было написать IdHTTP 1
8)
Tisso (2006-09-05 21:51:00) [5]Форум исказил немного код, так что будь внимателен.. Могут быть лишние пробелы в переменных или значениях.. В DataString точено есть..
Tisso (2006-09-05 21:49:00) [6]Ты про отредактированный твой? Во он
procedure TfrmMain.Button2Click(Sender: TObject);
var
data: TStringStream;
DataStream: TMemoryStream;
DataString: String;
begin
with IdHTTP do
begin
DataStream:= TMemoryStream.Create;
data:= TStringStream.Create('');
Host:= 'beonline.ru';
Request.UserAgent:= 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.6)';
Request.Accept:= 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5';
Request.AcceptLanguage:= 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3';
Request.AcceptEncoding:= 'gzip,deflate';
Request.AcceptCharSet:= 'windows-1251,utf-8;q=0.7,*;q=0.7';
Request.Connection:= 'keep-alive';
Request.CacheControl:='no-cache';
Request.ContentType:= 'application/x-www-form-urlencoded';
Request.Connection:= 'Close';
Request.Pragma:= 'no-cache';
DataString:= 'number_sms=number_sms_send&termtype=G&x=5&y=4&prf=7909&phone=!!ТЕЛЕФОН!!&messag e=' + txtMessage.Text; //Обрати внимания без префикса надо писать.. Для префикса используй prf.. В данном случае он равен 7909.
data.WriteString(DataString);
IdHTTP.Post(' http://www.beeonline.ru/servlet/send/sms/', data, DataStream);
DataStream.SaveToFile('BOL2.html');
DataStream.Free;
data.Free;
end;
txtMessagesList.Lines.AddStrings(txtMessage.Lines);
txtMessage.Text:= '';
end;
Tisso (2006-09-05 21:41:00) [7]Проблема, с которой я сталкнулся, это что при отправке в ответ получаю "Внимание!!! Неверно указан код подтверждения отправки.". Не знаю как это решить пока.. В чем именно проблема я знаю.
Я сначала загружаю исходник страницы, из него достаю confirm_key.. и потом в TImage загружаю картинку с кодом, который необходимо ввести.. Но я не знаю как правльно произвести загрузку.. Потому что к моменту когда я загружаю эту картинку я получаю совершенно другую..
Т.е. мне необходимо реализовать рагрузку как в это сделано в броузерах.. Т.к., как я думаю, раз загрузка идет в разное время, значит и в ответ я буду получать картинки разных сессий..
Буду рад если, кто поможет разрешить данную задачу!
Viktop (2006-09-05 21:14:00) [8]to Tisso
Напиши свой код, если не трудно ;)
Viktop (2006-09-05 21:03:00) [9]Вспомнил. Это я для регистрации на форуме хотел прогу написать. Тогда и подключал. Если не ошибаюсь, то там просто надо его подключить и разрешить куки (разрешены по умолчанию)
> И твоим способом тоже доходят
А твой какой? Число с картинки вводить?
Viktop (2006-09-05 21:01:00) [10]
> Попробуй подключить компонент IdCookieManager к IhHTTP..
>
Хм. Завтра вечером гляну. НО в каком-то проекте я точно подключал CookieManager...
Tisso (2006-09-05 20:41:00) [11]Это ты зря.. Очень даже доходят.. И твоим способом тоже доходят.. Попробуй подключить компонент IdCookieManager к IhHTTP.. Там я думаю ты поймешь как подключить, также как и ImagesList поключается. Если не поможет, то пиши..
Viktop (2006-09-05 17:52:00) [12]http://www.beonline.ru/portal/comm/send_sms/simple_send_sms.sms
POST /portal/comm/send_sms/simple_send_sms.sms HTTP/1.1
Host: www.beonline.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://www.beonline.ru/portal/comm/send_sms/simple_send_sms.sms
Cookie: UserPhone=79090714251; JSESSIONID=avK1A6LLWgX6
Content-Type: application/x-www-form-urlencoded
Content-Length: 215
deferto=&adv_year=&send=send&confirm_key=_F4Ut%5E5aw7&confirm_code=9867&destination_number_from=ordinary&phone=9090714251&messa ge=%D2%E5%F1%F2%EE%E2%EE%E5+%F1%EE%EE%E1%F9%E5%ED%E8%E5&mlength=136&phone_answer_number=
HTTP/1.x 200 OK
Date: Tue, 05 Sep 2006 13:49:57 GMT
Server: Apache/2.0.49 (Linux/SuSE)
Vary: Accept-Encoding
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Pragma: no-cache
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=windows-1251
----------------------------------------------------------
SMS содержит текст: Тестовое сообщение
> Ты объявлял aStream, а пишешь Stream
Я думаю, что это не принципиально, т.к. SMS не доходят...
Tisso (2006-09-05 14:30:00) [13]Viktop, проснифери http://www.beonline.ru/portal/comm/send_sms/simple_send_sms.smsпожалуйста, а то мой тип соединения не позволяет работать со сниферами. У меня RasPPPoE соединение.. Снифер не понимает почему-то.
Tisso (2006-09-05 13:28:00) [14]И про опечатку..
она здесь
IdHTTP.Post(' http://www.beeonline.ru/servlet/send/sms/', Params, Stream);
Ты объявлял aStream, а пишешь Stream.. Странно, что у тебя еще какой-то результат записывался.
Про снифер.. Скачал я Fiddler.. только так и не разобрался пока как на нем перехватывать POST..
Tisso (2006-09-05 11:59:00) [15]Странно, а у меня через http://www.beonline.ru/portal/comm/send_sms/simple_send_sms.smsне отправляется. Правда я до конца не уточнял, может я не все параметры передаю...
Попробую снифер найти и посмотреть что там отправляется. Или, Viktop, если не затруднит напиши, что передается на http://www.beonline.ru/portal/comm/send_sms/simple_send_sms.sms.
Viktop (2006-09-05 06:04:00) [16]
> Интересно. Только что нашел программу BeeOnLine Express.
> она без запроса на подтверждение отправляет. Какой программой
> ты сниферил? Я хочу тоже попробовать и тогда буду думать.
>
Вот и я о том же. Чем снифал я написал выше - расширение для браузера Firefox (Live HTTP Headers 0.12: http://livehttpheaders.mozdev.org/)
А вот для Windows надо ещё поискать нормальный снифер
> А вот в другом месте... Возможно, это просто движок форума
> накосячил:
Ага. В проекте всё нормально.
> И еще, скорее всего сервис http://www.beeonline.ru/servlet/send/sms/
> не поможет. Я думаю BeLine прикрыли его
Через расширение для браузера отправляется нормально
> Ищи опечатку в коде.
Что-то не могу найти. Видать квалификации мало =(
Piter (2006-09-04 00:08:00) [17]хм... В одном месте опечатка точно есть, но дело вряд ли в ней.
А вот в другом месте... Возможно, это просто движок форума накосячил:
Viktop (02.09.06 8:02)
&mes sage=Krosavcheg';
Piter (2006-09-04 00:03:00) [18]Viktop (02.09.06 8:02)
надо внимательнее проверять свой код. И проверять его минимум 10 раз, прежде чем на форум с вопросами лезть.
Ищи опечатку в коде.
Tisso (2006-09-03 22:59:00) [19]Кстати.. Еще идея такая.. Почему не отправляется сообщение? Я думаю, что при отправке создается сессия, а ты ее не создаешь..
Tisso (2006-09-03 22:57:00) [20]Интересно. Только что нашел программу BeeOnLine Express. она без запроса на подтверждение отправляет. Какой программой ты сниферил? Я хочу тоже попробовать и тогда буду думать.