Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi InternetOpenUrl - Problem --> Rückgabewert nil!! (https://www.delphipraxis.net/100738-internetopenurl-problem-rueckgabewert-nil.html)

bingo72 3. Okt 2007 06:46


InternetOpenUrl - Problem --> Rückgabewert nil!!
 
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'... :wall:
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??!! :gruebel:

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??

bingo72 3. Okt 2007 07:37

Re: InternetOpenUrl - Problem --> Rückgabewert nil!!
 
Hab den Fehler gefunden...ich hab beim InternetOpen den letzten Flag auf INTERNET_FLAG_ASYNC gesetzt...da gehört 0 rein...maahhhhh!!! :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:46 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz