[Delphi] SMSY do IDEI

0

Hmmm.... jakiś tydzień temu, obiecywałem komuś (już nie pamiętam komu)
że napisze jak te smsy do idei wysyłać (z wyświetlaniem obrazka niestety :( )

nie umiszczam tego w gotowcach bo idea i tak zmieni zabezpieczenia :)

no więc ładujemy na formę:

IdHTTP1 - można by ClientSocket ale wszyscy będą jończyć
WebBrowser1 - do wyświetlania obrazka
Memo1 - wiadomość
Edit1 - numer telefonu
Edit2 - kod z obrazka (z WebBrowsera)
Edit3 - podpis
Button1 - wyślij
Button2 - odśwież (powtórnie wyświetla obrazek i uaktualnia zmienne Cookie i Token)

dwie zmienne globalne:
var Cookie , Token : String;

no i oprogramowanie:

procedure TForm1.Button2Click(Sender: TObject);
var
Odbior : TStringStream;
begin
Odbior := TStringStream.Create('');
IdHTTP1.Get('http://213.218.116.131/', Odbior);
Cookie := IdHTTP1.Response.ExtraHeaders.Text;
Token := Odbior.DataString; Odbior.Free;
Delete(Token, 1, Pos('rotate_vt.asp?token=', Token) - 1);
Token := Copy(Token, 1, 56);
WebBrowser1.Navigate('http://213.218.116.131/' + Token);
Delete(Token, 1, 20);
Delete(Cookie, 1, Pos('Set-Cookie: ', Cookie));
Cookie := Copy(Cookie, 12, Pos(';', Cookie) - 12);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
Nadanie , Odbior : TStringStream;
begin
Nadanie := TStringStream.Create('');
Odbior := TStringStream.Create('');
Nadanie.WriteString('token=' + Token +
'&RECIPIENT=' + Edit1.Text +
'&SHORT_MESSAGE=' + Memo1.Text +
'&SENDER=' + Edit3.Text +
'&pass=' + Edit2.Text);
IdHTTP1.Request.ExtraHeaders.Add('Cookie: ' + Cookie);
IdHTTP1.Request.Referer := 'http://213.218.116.131/';
IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded';
IdHTTP1.Post('http://213.218.116.131/sendsms.asp', Nadanie, Odbior);
//w Odbior.DataString trzeba sprawdzić czy jest tekst że
//wiadomośc dostarczono
Nadanie.Free;
Odbior.Free;
end;

Oczywiście to jest tylko przykład, który należy sobie dopracować,
no ważna sprawa, coś tam jest z wiadomością że trzeba znaki spacji
pozamieniać na '+', przykład w programie do wysyłania smsów na tej
stronie, ja tam osobiście bym użył ClientSocket i urldecode więc
w przykładzie tego nie ma.

Co do WebBrowsera w onDocumentCompete formy można by wstawić:

procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin
with WebBrowser1 do
begin
OleObject.Document.Body.leftMargin := 0;
OleObject.Document.Body.topMargin := 0;
end;
end;

żeby łądniej wyglądało.

niom to tyle

0

Zaraz sprawdze jak dojdzie to dzięki jak nie to też dzięki ;).

0

Zaraz sprawdze jak dojdzie to dzięki jak nie to też dzięki ;).

jak wkleisz bezpośrednio z forum to dwa błędy się wkradną:

  1. Set-Cookie zamienia się nie wiem dlaczego na set-Cookie
    a musi być dużą literką
  2. robi się spacjia między http:// i 213..... bla bla bla

a co do tego czy działa to ja już na dzisiaj wyczerpałęm limit smsów
z jednego IP :-D

z tą widomością to jednak należy urlencode użyć,
do sekcji uses IdGlobal i np.:

...
'&SHORT_MESSAGE=' + urlencode(Memo1.Text) +
...

powinno działać już dobrze ale ja mogę sprawdzić dopiewro za 3 godziny :-D

0

Działa tylko te spacje :-8 :|

Dzięki piechnat

0

Witam !

Czy nie wie ktos dlaczego u mnie po wklejeniu tego kodu pojawia sie:
undeclared identefier ExtraHeaders
Mam D7 z Indy 9 !

hehe zrobilem tam gdzie bledy na poczatku linijki // i bez urlencode i dziala !

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.