Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Fehlermeldung bei idhttp.get (https://www.delphipraxis.net/129786-fehlermeldung-bei-idhttp-get.html)

wadriller 25. Feb 2009 14:04


Fehlermeldung bei idhttp.get
 
Hallo zusammen.

Hier im Forum hab ich ja schon den Tipp gefunden wie man bei den Indys ein "OnError"-Event einbaut.
Das hab ich auch gemacht, hierfür erstmal vielen Dank.

Leider hab ich noch ein weiteres Problem.
Der Code läuft in einem eigenen Thread der vom Hauptprogramm gestartet wird.

Delphi-Quellcode:
private
  procedure OnIndyError(fErrorType: TErrorType;fErrorMsg: String);

...
...
...

constructor xxx.Create(Image: TPMultiImage; ToDo: Integer);
begin
 .....
  // Exceptionbehandlung für die Indy Komponenten
  // Code aus Delphi Praxis
  vIndyException:=TIndyException.Create;
  vIndyException.OnError:=OnIndyError;
  inherited Create(true);
end;

....
....
....

procedure xxx.HTTPAbfrage;
var
  Parameter, Header, HTTPContent: String;
begin
.....
  try
    HTTPContent := HTTP.Get(AbfrageURL + '?' + Parameter);                              // Starte HTTP Abfrage
    HTTPAuswerten(HTTPContent);
  except
    HTTPContent := '';
    AnfrageStatus := mlsSendenFehler;
    if PruefeInternetVerbindung then begin
      OnlineStatus := mlsOnline;
    end else begin
      OnlineStatus := mlsOffline;
    end;
    http.Disconnect;
  end;
end;

....
....
....


procedure xxxx.OnIndyError(fErrorType: TErrorType; fErrorMsg: String);
begin
  LastIndyError := fErrorMsg;
end;
Das Abfragen funktioniert wunderbar.

Wenn ich jetzt aber z.B. bei der HTTP-Komponenten (TIdHTTP) einen Proxyserver eintrage den es nicht gibt, oder wenn ich den Code über einen Knopf schnell hintereinander zweimal aufrufe (was gehen soll), versucht er das GET und bringt danach die Meldung

Win32Error. Fehler Code:5
Zugriff verweigert.

Danach geht die komplette Anwendung zu. Was könnte das sein ?

Liegt es evtl. daran das ich versuche, falls eine Connection da ist, da erst ein disconnect zu machen ?
Hab leider keine Variante gefunden wie ich sonst ein laufendes "GET" abbrechen kann.

SirThornberry 25. Feb 2009 14:30

Re: Fehlermeldung bei idhttp.get
 
Ich würde einfach einen Haltepunkt setzen und dann schauen wo er abraucht.

wadriller 25. Feb 2009 14:37

Re: Fehlermeldung bei idhttp.get
 
Das ist garnicht so einfach.

Hab schon "Bei Delphi-Exceptions stoppen" angehakt, getestet und danach konnte ich den Rechner ausschalten und neu starten.
Der war komplett tot. Werd es aber mal mit nem Haltepunkt versuchen

SirThornberry 25. Feb 2009 14:49

Re: Fehlermeldung bei idhttp.get
 
Wenn du die Http-Komponente nur innerhalb der Funktion nutzt würde ich dazu übergehen diese innerhalb der Funktion zu declarieren, dort zu erzeugen und auch dort frei zu geben. Dann hast du schonmal nicht das Problem das während dem Laden ein anderer Thread (oder durch Processmessages der gleiche) nochmals ein Laden beginnt.
Anderenfalls würde ich da einfach eine Prüfung drum setzen ob er bereits in dem Abschnitt ist.

wadriller 25. Feb 2009 14:59

Re: Fehlermeldung bei idhttp.get
 
Vor dem Aufruf von "HTTPAnfrage" wird noch eine Funktion "HTTPINIT" aufgerufen.
Dort wird die HTTP Komponente erzeugt und nach dem Aufruf von HTTPAnfrage wird das auf wieder freigegeben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:51 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