Einzelnen Beitrag anzeigen

bingo72

Registriert seit: 18. Aug 2006
Ort: Österreich
180 Beiträge
 
Delphi 5 Professional
 
#1

InternetOpenUrl - Problem --> Rückgabewert nil!!

  Alt 3. Okt 2007, 06:46
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??
  Mit Zitat antworten Zitat