Jak wyslac cos korzystajac z protokolu HTTP??

0

Witam,

Od dluzszego czasu programuje w Delphi, jednak nigdy wczesniej nie musialem pisac programu wykorzystujego polaczenie przez HTTP.

Musze napisac w Delphi 5 cos w stylu:

[code]POST sciezka HTTP/1.0
Host: host
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/4.0
Content-Length: dlugosc
Pragma: no-cache
dane[/code]

gdzie: [code]sciezka, host, dlugosc, dane[/code] to zmienne

Czy moglby mi ktos podac zrodlo w Delphi (5) ktore wysylalo by na podany adres ([code]host, sciezka[/code]) taki pakiet danych?

Z gory dziekuje za pomoc,

Dawid 'Vade' Kopiec
e-mail: [email protected]

0

nie licz az tak za bardzo na zrodla..pomoc tak.. :-)
a wiec..po pierwsze poelcam kupno ksiazki Adama (Delphi 7 ćwiczenia dla zaawansowanych - 18zł to nie duzo)
W książce masz opisany sposób wysyłania i odbierania danych za pomocą HTTP..

W skrocie wygląda to następująco..

procedure TMainFrm.BtnWyslijClick(Sender: TObject);
var
StreamIn,streamOut :TStringStream;
begin
Http.Host:=EdtHost.Text;//przypisujemy adres
StreamIn:=TStringStream.Create('');//strumienie
StreamOut:=TStringStream.Create('');
TempList.Clear;
 try
  try
  StreamIn.WriteString('Tu zapisujemy ciag jaki chcemy wyslac');
//np [email protected]&pass=haslo&=nick=lofix
  Http.Post('http://jakis.adres.pl StreamIn, StreamOut);{wysylamy strumien jednoczesnie odbierajac odpowiedz (srtreamOUT) }

  MemoGet.Text:=StreamOut.DataString ;//zapisujemy do memo nasz odpowiedz...
  finally
  StreamIn.Free;
  StreamOut.Free;//zwalniamy strumienie
  end;
 except
 ShowMessage('NIE HALO !!!!');//blad...dane nie zostaly poprawnie wyslane
 end;
end;

To tylko kawalek mego starego kodu...

0

Problem w tym, ze ja chce napisac pod Delphi 5 a tam nie ma kompotentu HTTP, wiec jak mam to zrobic?

Zalezaloby mi na fragmencie kodu, ktory bedzie wysylal na podany adres w internecie (host i sciezka) pewne dane uzywajac HTTP, jednak bardzo zalezy mi na tym by ten kod byl wlasnie w Delphi 5 (nie mam innego konpilatora).

Z gory dziekuje za pomoc,

Dawid 'Vade' Kopiec
[email protected]

0

<font color="green">Problem w tym, ze ja chce napisac pod Delphi 5 a tam nie ma
kompotentu HTTP, wiec jak mam to zrobic?</span>

W necie jest masa komponentów Internetowych do ściągnięcia, chociażby Indy

http://www.sourceforge.com

0
  StreamIn.WriteString('Tu zapisujemy ciag jaki chcemy wyslac');
//np [email protected]&pass=haslo&=nick=lofix

OK, ale co zrobic jesli jako pass chcemy np przekazac haslo&haslo?
Bo np ktos ma haslo ze znakiem & w srodku? W takim wypadku ten sposob sie wywala :-( i trakuje drugie haslo juz jako kolejna zmienna :-(

Jest to szczegolnie irytujace przy wstawianiu adresow ;-|
Jest moze na to jakas rada?

0

Wszystkie przeglądarki zmieniają znaki inne niż litery i cyfry na ich kod ASCII podany w hexach poprzedzony znakiem %. W taki mprzypadku znak & będzie miał postać %26

Wystarczy więc, że zminisz wszystkie znaki hasła ich kody ASCII dodając % przed każdym, bo serwery rozpoznają tysz litery i cyfry przekonwertowane w ten sposób.

Chciałbym jeszcze dodać że w PHP jest tysz taska funkcja urlencode, urldecode.

0

bez żadnych komponentów:
(WinInet - http://www.jack1024.glt.pl->Dokumentacje->Win32 API->WinInet.pdf or MSDN)
InternetOpen + InternetConnect + HttpOpenRequest + HttpSendRequest or HttpSendRequestEx + InternetWriteFile

0

Wszystkie przeglądarki zmieniają znaki inne niż litery i cyfry na ich kod ASCII podany w hexach poprzedzony znakiem %. W taki mprzypadku znak & będzie miał postać %26

Wystarczy więc, że zminisz wszystkie znaki hasła ich kody ASCII dodając % przed każdym, bo serwery rozpoznają tysz litery i cyfry przekonwertowane w ten sposób.

Chciałbym jeszcze dodać że w PHP jest tysz taska funkcja urlencode, urldecode.

Wiem o tym calym %26 ale problem polega na tym ze jak zmienie & na %26 w jakim URLu to pozniej sie takowa strona nie otwiera :-(
Tzn otwiera sie ale nie traktuje tego %26 jako & i nie wszystkie parametry sa przekazywane :-(

Co do PHP to oczywiscie ze jest taka funkcja ale ja to robie w Delphi a nie w PHP

Masz moze jeszcze jakis inny pomysl?

0

Post powyzej jest moj

1 użytkowników online, w tym zalogowanych: 0, gości: 1