[Delphi] Indy HTTP kilka pytań:)

0

Mam parę pytań dot. IdHTTP ;-)

  1. Skorzystałem z takiego kodu, który jest przypisany OnStatus:
procedure TForm1.IdHTTP1Status(ASender: TObject; const AStatus: TIdStatus;
  const AStatusText: String);
begin
  Memo1.Lines.Add(AStatusText);
  case AStatus of
    hsResolving: Memo1.Lines.Add('Wyszukiwanie hosta ');
    hsConnecting: Memo1.Lines.Add('Łączenie z hostem ');
    hsConnected: Memo1.Lines.Add('Połączenie zestawione.');
    hsDisconnecting: Memo1.Lines.Add('Rozłączanie ');
    hsDisconnected: Memo1.Lines.Add('Rozłączono !');    
  end; 
end;

W memo widzę, że po każdej czynności IdHTTP się rozłącza, czyli:

Resolving hostname blebleble.pl.
Wyszukiwanie hosta 
Connecting to xxx.xxx.xx.xx.
Łączenie z hostem 
Connected.
Połączenie zestawione.
Disconnected.
Rozłączono !
Disconnecting.
Rozłączanie 
Disconnected.
Rozłączono !

Nie da się tak zrobić, żeby mi nie zrywał tego połączenia? Nie wiem dokładnie jak to działa. Ale po logowaniu na stronę zostaje przypisany numer sesji, więc chyba ta sesja nie wygasa?

  1. Jak za pomocą idCookieManager przechwycić, kiedy zostaje wysłane ciastko do serwera?
    Nie mam kompletnego pojęcia jak działają cookies:(

  2. Logując się na stronę wysyłam posta, następnie przechodzę na stronę index.php wysyłając tam posta z numerem sesji itd. Czasami wyświetli mi kod strony, ale większość prób kończy się tak, że widzę kod strony z napisem: Błąd bazy danych 0.
    Dodam, że nie wysyłam wszystkich postów ani get'ów jakie poleciały na snifferze, gdy analizowałem kod strony, czy to może być przyczyną tego problemu, że nie wysyłam jakiegoś zapytania do serwera?

0

sesje to chyba w ciachach siedzą=]

0

Tylko identyfikatory sesji siedzą w ciastkach.

@pigmejek: nie, to IMHO nie jest wina sesji, spróbuj użyć:

IdHttp.Request.Connection := 'keep-alive';

Powinno pomóc, chociaż też nie zawsze. Jeśli serwer odpowie, "że nie podtrzyma połączenia", to komponent się rozłączy ;)

  1. Ciasteczka są przesyłane w nagłówku HTTP - przykład odpowiedzi z serwera:
HTTP/1.1 200 OK
Date: Sun, 11 Jul 2004 12:04:30 GMT
Server: Apache/2.0.50 (Unix) DAV/2
Set-Cookie: PSID=d6dd02e9957fb162d2385ca6f2829a73; path=/ ### Przesłanie przez serwer ciastek
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: application/xhtml+xml; charset=utf-8
CRLF
#Treść strony#

Wikipedia o TU
Komponent przy każdym odebraniu obrabia nagłówek i zapisuje informacje "w sobie". Następnie, gdy zechcesz pobrać stronę komponent ponownie przerabia uzbierane wcześniej dane (oraz te podawane przez ciebie przy tworzeniu komponentu lub połączeniu) i formuje je w nagłówek podobny do powyższego ;]
Dlatego tak własciwie jedynym miejscem gdzie możesz przechwycić, to jakie ciastka zostaną przesłane (i ewentualnie je zmodyfikować), jest moment przed wysłaniem zapytania do serwera (GET/POST).

  1. Może, ale nie musi. Czy na przeglądarce również często masz takie komunikaty?
    Zresztą już gdzieś widziałem takiego msg`a :>
0
  1. Na przeglądarce takich komunikatów nie ma :)
    Hihi ale nie powiem gdzie taki występuje :D bo <ort>Od razu </ort>wyjdzie na jaw co mam zamiar napisać :-O

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