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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2011, 16:35   #1
gufon
Форумчанин
 
Регистрация: 21.12.2010
Сообщений: 224
Вопрос Хочу сделать прогу которая отправляет смс

вот хочу сделать прогу для отправки смс, вот ссылка на офф сайт который отправляет http://www.mts.com.ua/ukr/sendsms.php# там есть в низу отправить сообщение, откроется форма я узнал путь на исходник но не работает, скорее всего капча вот код пост запроса
Код:
params:=TStringList.Create;
responseres:=TStringList.Create;
params.Add('network1=38066');
params.Add('phone1=6633128');
params.Add('message=долджолд');
params.Add('lang=lang_lat');
responseres.Text:=http1.Post('http://www.mts.com.ua/ukr/sendsms.php/back/modules/sms/db_sms.php',params);
сам запрос рабочий делал до этого, на своем сайте (форуму обратной связи) вообщем помогите чем сможете))))))))
gufon вне форума Ответить с цитированием
Старый 03.03.2011, 18:55   #2
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию

На форме 2 TButton, 4 TEdit , 1 TImage.
Edit1 - network1
Edit2 - phone1
Edit3 - Текст сообщения
Edit4 - Текст с капчи

Проверяйте. Должно работать.
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdHTTP, IdCompressorZLib, StrUtils, ExtCtrls, jpeg;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Image1: TImage;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    http: TIdHTTP;
    SendData: TStringList;
    procedure GetCaptcha;
    function GetValue(src, name: string; const d1: string = '"';
      d2: string = '"'): string;
    function ParseNameValue(src: string): string;
    procedure LoadCaptcha(var Image: TImage; const src: string);
    procedure SendSMS;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  GetCaptcha;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  SendSMS;
end;

function TForm1.GetValue(src, name: string; const d1: string = '"';
  d2: string = '"'): string;
var
  i: integer;
begin
  i := Pos(d1 + name + d1, src);
  i := PosEx('value', src, i);
  i := PosEx(d2, src, i) + 1;
  Result := Copy(src, i, PosEx(d2, src, i) - i);
end;

function TForm1.ParseNameValue(src: string): string;
var
  i: integer;
  s: string;
begin
  i := Pos('name='#39, src) + 6;
  Result := Copy(src, i, PosEx(#39, src, i) - i);
  Result := Result + '=' + GetValue(src, Result, #39);
end;

procedure TForm1.LoadCaptcha(var Image: TImage; const src: string);
var
  i: integer;
  imgUrl: string;
  ms: TMemoryStream;
  jpeg: TJPEGImage;
begin
  i := Pos('src="/back/', src) + 5;
  imgUrl := 'http://www.mts.com.ua' + Copy(src, i, PosEx('"', src, i) - i);

  ms := TMemoryStream.Create;
  http.Get(imgUrl, ms);
  ms.Position := 0;
  jpeg := TJPEGImage.Create;
  jpeg.LoadFromStream(ms);
  ms.Free;
  Image.Picture.Assign(jpeg);
end;

procedure TForm1.GetCaptcha;
var
  page: string;
begin
  http := TIdHTTP.Create;
  http.Compressor := TIdCompressorZLib.Create;
  http.Request.UserAgent := 'Opera/9.80';
  http.AllowCookies := True;
  http.HandleRedirects := False;

  page := http.Get('http://www.mts.com.ua/ukr/sendsms.php');

  http.Request.Referer := 'http://www.mts.com.ua/ukr/sendsms.php';

  SendData := TStringList.Create;
  SendData.Add('script=' + GetValue(page, 'script'));
  SendData.Add('sms_tag_id=' + GetValue(page, 'sms_tag_id'));
  SendData.Add(ParseNameValue(page));

  LoadCaptcha(Image1, page);

  ShowMessage('Введите данные');
  ShowMessage(SendData.Text);
end;

procedure TForm1.SendSMS;
begin
  SendData.Add('network1=' + Edit1.Text);
  SendData.Add('phone1=' + Edit2.Text);
  SendData.Add('message=' + Edit3.Text);
  SendData.Add('captcha=' + Edit4.Text);
  SendData.Add('lang=lat');

  try
    http.Post('http://www.mts.com.ua/back/modules/sms/db_sms.php', SendData);
  except
    if http.ResponseCode = 302 then
    begin
      http.Get('http://www.mts.com.ua' + http.Response.Location);
    end;
  end;
  ShowMessage('Сообщение отправлено');
  SendData.Free;
  http.Compressor.Free;
  http.Free;
end;

end.
kangreon вне форума Ответить с цитированием
Старый 03.03.2011, 19:07   #3
gufon
Форумчанин
 
Регистрация: 21.12.2010
Сообщений: 224
По умолчанию

Код:
GetCaptcha;
а где можно почитать наример про это
gufon вне форума Ответить с цитированием
Старый 03.03.2011, 19:14   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

эмм, а что читать?
в коде этот метод есть.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.03.2011, 21:38   #5
gufon
Форумчанин
 
Регистрация: 21.12.2010
Сообщений: 224
По умолчанию

Цитата:
в коде этот метод есть.
А что это значит
gufon вне форума Ответить с цитированием
Старый 04.03.2011, 03:46   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

процедура GetCaptcha есть в коде.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужен код функции, которая отправляет письмо на ящик на mail.ru kolchakA C/C++ Сетевое программирование 9 06.12.2009 22:43
Хочу написать прогу,ставящую пароли на папки! RUSёк Свободное общение 3 18.10.2008 13:42
Хочу создать прогу оочень интересную Илюха Общие вопросы Delphi 5 12.08.2008 11:33
как сделать прогу которая вылетает при откритие winamp'а? Iceman Общие вопросы Delphi 5 25.09.2007 22:55