Hi,
also dann muss ich ein bisschen weiter ausholen. Am besten ist es wenn man sich erstmal
Wireshark besorgt, damit kann man dann den kompletten Netzwerkverkehr analysieren und du erhältst dann genau mit welchen Werten der Server antwortet. Also einfach mal manuell mit dem Browser einloggen und Wireshark mitloggen lassen.
Des Weiteren empfehle ich dir auch wenn du kein FireFox benutzt diesen zu installieren und die
Web Developer Erweiterung zu installieren, damit kannst du die
HTML Formularfelder auslesen ohne das man im Quellcode wühlen muss.
Nun zum "AllowCookies" damit kann man sagen, das
Indy automatisch weiterleiten soll (klappt aber auch nicht immer
), du kannst dies nach deinen Wünschen entsprechend aktivieren/deaktivieren.
So nun zu deinem Code, was ich da sehe ist ganz schlechter Stil!
Hier mal ein Muster wie sowas bei mir im Groben aufgebaut ist:
Delphi-Quellcode:
with TIdHTTP.Create(
nil)
do
try
// ggf. Proxy, gZip, SOCKS, CookieManager, SSL ...
Request.ContentType:='
application/x-www-form-urlencoded';
// ggf. weitere Werte, andere Browserkennung usw.
Params := TStringStream.Create('
');
// bei ISO
// für UTF-8 Params := TStringStream.Create('', CP_UTF8);
ReplyData := TStringStream.Create('
');
try
// Ich bezweifle stark, dass es ein Eingabefeld mit diesem Namen gibt!
// Bei nicht UTF-8 Webseiten ist es im Regelfall so, dass man Sonderzeichen escapen muss!
// Dort hilft HTTPEncode() aus der Unit "HTTPApp"
// PostData.WriteString('/Login user='+user+'&password='+passwort');
try
Post('
http:', PostData, ReplyData);
except
// Fehlerbehandlung
end;
finally
ReplyData.Free;
Params.Free;
end;
finally
Free;
end;
Ob oder ob man nicht angemeldet ist würde ich auch anders prüfen! Wenn man Angemeldet ist gibt es meisten einen einmaligen Logout-Link, den würde ich suchen. Früher oder später wirst du aber um RegEx nicht herumkommen und solltest dich da mal zu einarbeiten.