Guten Morgen!!
Ich möchte auf einem Webserver die Anmeldedaten eines Users samt Passwort checken. Mittels HTTP-Get schicke ich die Daten zum Server und warte auf den Response den ich dann später mit InternetReadFile auslesen möchte...
Hierfür verwende ich die WinInet.pas nach folgendem Muster:
Delphi-Quellcode:
if (InternetAutodial(INTERNET_AUTODIAL_FORCE_ONLINE, 0)) then begin
fIHandle := InternetOpen(PChar(lAgent), INTERNET_OPEN_TYPE_PRECONFIG, nil,
nil, INTERNET_FLAG_ASYNC);
(* Settings setzen für Timeout, da man eine Zeit braucht, um auf den Response
zu warten *)
if Assigned (fIHandle) then begin
result := InternetSetOption(fIHandle, INTERNET_OPTION_CONNECT_TIMEOUT,
@lTimeout, 4);
result := result AND InternetSetOption(fIHandle, INTERNET_OPTION_RECEIVE_TIMEOUT,
@lTimeout, 4);
result := result AND InternetSetOption(fIHandle, INTERNET_OPTION_SEND_TIMEOUT,
@lTimeout, 4);
if not (result) then begin
lErrorMsg := SMSINETCONNECTERROR + CRLF + 'Status: ' + IntToStr(GetLastError);
MessageDlg(SMSINETCONNECTERROR, mtError, [mbOK], 0);
end;
end;
end;
danach (wenn das Ergebnis = true ist, und das funktioniert auch reibungslos) gehe ich mit der
URL in die nächste Methode:
Delphi-Quellcode:
(* Prüfung der Anmeldedaten am Server *)
function TfmFahrschuleD.GetHTTPResponse(aURL: String): Boolean;
var
lIHandle : HINTERNET;
begin
result := false;
lIHandle := InternetOpenUrl(fIHandle, PChar(aURL), nil, 0, INTERNET_FLAG_RELOAD, 0);
MessageDlg(IntToStr(GetLastError), mtError, [mbOK], 0);
if Assigned(lIHandle) then begin
end;
end;
Doch wenn ich beim Debuggen lIHandle checke ist der Wert nach dem InternetOpenUrl immer nil!! Dies ist auch so, wenn ich eine 1000-fach aufgerufene
URL angebe wie 'http://www.orf.at'...
Wenn ich mir andere Beispielcodes ansehe rufen die Leute doch auch mit denselben Parametern (bis auf die
URL) die InternetOpenUrl auf und bekommen scheinbar einen Rückgabewert der nicht nil ist??!!
Ach ja GetLasterror liefert die Zahl 997, was mir bisher auch noch nicht recht weitergeholfen hat??!!
997 bedeutet ERROR_IO_PENDING...wie denn das?? Auf der Microsoft-Seite steht ein Kommentar (aus dem Jahre 1999!!), daß dieser Fehler mit IE 4.01 behoben sein wird. Nur ich verwende IE 7.0 und meine WinInet.dll ist aus diesem Jahr!!
Was mach ich falsch??