Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi idhttp1.Get Error (https://www.delphipraxis.net/94634-idhttp1-get-error.html)

Cheffu 24. Jun 2007 16:25


idhttp1.Get Error
 
Hallo

wenn ich mit idhttp1.Get('http://www.cheffu.de/dasd.php') den Inhalt der Seite abfrage gibts dieses nicht,deshalb kommt der Error EIdHTTPProtocolExeption.

Kann mir jemand sagen wie ich die Error-Meldung abfange oder einen anderen Weg für folgendes Problem:
Es soll überprüfen ob es die Seite gibt, wenn ja, dann Label1.Caption:=ja;
un wenn nicht Label1.Caption:=nein;

oder etwas in der Art. Also würds siche eine if Abfrage vll eignen, aber die Fehlermeldung Zerstört dies.

mit freundlichen Grüßen
Cheffu

inherited 24. Jun 2007 16:28

Re: idhttp1.Get Error
 
Wie wär es mit try-except?

marabu 24. Jun 2007 16:29

Re: idhttp1.Get Error
 
Hallo,

im Thread url existiert? findest du bestimmt ein paar Anregungen.

Grüße vom marabu

Matze 24. Jun 2007 16:31

Re: idhttp1.Get Error
 
Oder in denen (die Suche hilft oft weiter):

Überprüfen, ob Seite vorhanden ist mit Indy
Prüfen ob Datei auf Server vorhanden

Cheffu 24. Jun 2007 16:50

Re: idhttp1.Get Error
 
@inherited: mit exept und so geht es nicht so leicht

danke erstmal an all die anderen. Ok, ich hätte erstmal suchen sollen, aber leider versteht ich keine der dort geposteteten Codes :(
Scheinbar soll die gut funktionieren:
Delphi-Quellcode:
// uses WinInet, idHTTP;

function UrlExists(sUrl: String; bAllowRedirects: Boolean = false): Boolean;
begin
  with TidHTTP.Create(nil) do
  try
    HandleRedirects := bAllowRedirects;
    Head(sUrl);
    Result := Response.ResponseCode = HTTP_STATUS_OK;
  finally
    Free;
  end;
end;
aber wie bau ich dies ein, dass es passiert wenn ich auf einen Button klicke?
Was muss ich davon verwenden um auszuwerten ob es den Link nun gibt oder nicht?

Sorry, habe gradmal in der Schule das allerbilligste Delphi gelernt

Klaus01 24. Jun 2007 16:54

Re: idhttp1.Get Error
 
Vielleicht so?

Delphi-Quellcode:
if UrlExists('deine URL') then
  label1.caption:='URL existiert'
else
  label1.caption:='URL nicht erreichbar';
Grüße
Klaus

Cheffu 24. Jun 2007 21:04

Re: idhttp1.Get Error
 
so einen Befehl gibts denkmal garnicht, zumidnest kann mein Delphi damit nichst anfangen.

Weis keiner wie ich den anderen Code entsprechend umbau?


Ich habe mir das Thread nochmal genau angeschaut wo dieser Code herstammt und dort konnte keiner eine funktionierende Lösung bieten


Edit:
auch der Code im anderen Thread
Delphi-Quellcode:
uses
  ...., IdHTTP;

....

function HTTPFileExists(aURL: String): Boolean;
begin
  with TIdHTTP.Create(nil) do
  try
    try
      Head(aURL);
      Result := ResponseCode = 200;
    except
      Result := False;
    end;
  finally
    Free;
  end;
end;
bringt beim einbau die fehlermeldung die ich am Anfang beschrieben habe. Ist also auch nicht zu gebrauchen.

Cheffu 24. Jun 2007 22:21

Re: idhttp1.Get Error
 
Ich weis das dies ein Doppelpost ist, aber es geht diesmal um die teilweise Auflösung des Problems.
In dem Post darüber steh ja nur, dass alles varianten nicht funktioniert haben.

Eine sehr leihcte und funktionierende Lösung ist dies:
Delphi-Quellcode:
begin
  try
    IdHTTP1.Get('http://www.cheffu.de/test2.php');
  except
    on EIdHTTPProtocolException do Memo1.Text:='Fehler!'+#13#10 + IdHTTP1.ResponseText


  end;//try
end;
Meine frage dazu ist aber:
wieso wird bei dem folgenden Code die else Zeile niemals ausgeführt? Diese müsste ja ausgeführt werden wenn es die Seite gibt:
Delphi-Quellcode:
begin
  try
    IdHTTP1.Get('http://www.cheffu.de/tasdadasd.html');
  except
    on EIdHTTPProtocolException do Memo1.Text:='Fehler!'+#13#10 + IdHTTP1.ResponseText
  else
    emo1.Text:='geht'

  end;//try
end;

Matze 25. Jun 2007 04:55

Re: idhttp1.Get Error
 
Das liegt daran, da die Syntax nicht stimmt und der Compiler es daher gar nicht kompilieren würde. Es müsste so heißen:

Delphi-Quellcode:
try
  IdHTTP1.Get('http://www.cheffu.de/tasdadasd.html');
  Memo1.Text := 'geht'
except
  on EIdHTTPProtocolException do
    Memo1.Text := 'Fehler!' + #13#10 + IdHTTP1.ResponseText;
end;
Der Aufbau von try - except ist also folgender:

Delphi-Quellcode:
try
  <Anweisungen> // die Fehler hervorrufen könnten
except
  <Anweisungen> // die im Falle eines auftretenden Fehlers ausgeführt werden sollen
end;
Es gibt hier also kein else oder ähnliches.

Cheffu 25. Jun 2007 12:01

Re: idhttp1.Get Error
 
Achso ok.

Habe beim stöbern duch diverse codes den else Befehl beim try gesehen, deshalb nahm ich an, dass es diesen gibt, aber so geht es ja auch, also vielen Dank :)

Zu dem Code, den ich gepostet habe. Komischerweise bringt er immernoch die Fehlermeldung die ich ganz am Anfang erwähnt habe, aber nur wenn man es in Delphi direkt probiert. Wenn man einfach die fertige exe benutzt geht es.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:07 Uhr.
Seite 1 von 2  1 2      

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