URL prüfen
-
solange du dein programm aus der ide heraus startest, bekommst du immer alle exceptions angezeigt, nur wenn du es normal startest, werden die exceptions in einem try/catch-block abgefangen ohne unterbrechung.
-
ja, das stimmt, wenn ich das Programm so starte kommen diese Exceptions nicht, aber ein Socket Fehler 11004 kommt...weiß jemand warum?
-
und einen Fehler "302 Found" bekomme ich auch, aber warum ist das überhaupt ein Fehler...
-
Wer sagt, dass 302 ein Fehler ist?? Fehler sind ab 500. Ein 11004 Error bedeutet, dass der Domain Name nicht in eine IP Adresse aufgelöst werden konnte (Grund: es wurde kein DNS Eintrag gefunden)
Statuscode Beschreibung
100 Continue
101 Switching Protocols
200 O.K.
201 Created
202 Accepted
203 Non-Authoritative Information
204 No Content
205 Reset Content
206 Partial Content
300 Multiple Choices
301 Moved Permanently
302 Moved Temporarily
303 See Other
304 Not Modified
305 Use Proxy
306 Reserviert
307 Temporary Redirect
400 Bad Request
401 Unauthorized
402 Payment Requiered
403 Forbidden
404 Not Found
405 Method not allowed
406 Not Acceptable
407 Proxy Authentication Required
408 Request Timeout
409 Conflict
410 Gone
411 Length Requiered
412 Precondition Failed
413 Request Entity Too Large
414 Request-URI-Too Large
415 Unsupported Media Type
416 Requested Range Not Satisfiable
417 Exception Failed
500 Internal Server Error
501 Not Implemented
503 Service Unavailable
504 Gateway Timeout
505 HTTP Version Not Supported
-
naja, bei 302 tritt catch in kraft...
-
hmmm, warum funktioniert meine schleife so nicht:
for(i=0;i<20;i++) { Memo1->Lines->Strings[i]="zeile"; }dabei werden nur 2 anstatt 20 zeilen geschrieben, aber woran hängts?
-
Hallo
- was hast das noch mit diesem Thread zu tun?
- wiviele Zeilen sind denn vorher in dem Memo? Wenn du einfach 20 neue Zeilen willst, must du ->Lines->Add("Zeile") machenbis bald
akari
-
sorry...hat nur indirekt damit zu tun...
aber wenn ich etwas in eine bestimmte zeile einfügen will ohne es einfach anzuhängen, wie geht das dann?
ich dachte mit Memo1->Lines->Strings[x]="zeile x"; geht das....
-
Wenn man auf DIE SCHON VORHANDENEN ZEILEN zugreifen will sollte das immer über i<Memo1->Lines->Count erfolgen.
Zu 302:
Dann solltest du im Catchzweig auf die Nummer prüfen.
-
Hallo
Memo1->Lines->Strings[x]="zeile x";ersetzt die i-te Zeile im Memo durch "zeile x". Ist die Zeile nicht vorhanden, kommt eine Zugriffsverletzung.
Memo1->Lines->Strings[x]=Memo1->Lines->Strings[x]+"zeile x";fügt "zeile x" an die i-te Zeile an. Zugriffsverletzung...
Dann gibt es noch Lines->Insert() und Lines->Add().
Was willst du also?
bis bald
akari
-
danke nochmals...
also, so sieht die Stelle aus:for(i=0;i<lcount;i++) { if(IdHTTP1->Connected()) IdHTTP1->Disconnect(); try { IdHTTP1->Get(Memo1->Lines->Strings[i]); Memo2->Lines->Strings[i]=IdHTTP1->ResponseCode; ShowMessage(IdHTTP1->ResponseCode); } catch(EIdProtocolReplyError &e) { Memo2->Lines->Strings[i]=IdHTTP1->ResponseCode; } } }Memo2 ist 20 Zeilen groß, im try Block wird bei der ersten Ausführung alles gemacht, ab der zweiten Ausführung (für i=1) wird Memo2->Lines->Strings...nicht mehr ausgeführt, bzw es erscheint nichts in dieser Zeile, ShowMessage wird aber korrekt ausgeführt...
-
Warum ist Memo2 20 Zeilen groß???
Da du ja immer in das Memo2 schreibst sollte folgendes funktionieren:
for(i=0;i<lcount;i++) { if(IdHTTP1->Connected()) IdHTTP1->Disconnect(); try { IdHTTP1->Get(Memo1->Lines->Strings[i]); Memo2->Lines->Add(IdHTTP1->ResponseCode); ShowMessage(IdHTTP1->ResponseCode); } catch(EIdProtocolReplyError &e) { Memo2->Lines->Add(IdHTTP1->ResponseCode); } } }Des Weiteren ist m.E. das
if(IdHTTP1->Connected()) IdHTTP1->Disconnect();verbinden falsch. Damit wird eine Verbindung zu einem Server hergestellt. Das hat die Klasse geerbt, aber das willst du ja so direkt nicht (jedenfalls keine "Dauerverbindung"). Die Klasse sollte intern bei einem Get selbst die Verbindung herstellen und wieder beenden. Das sollte nur mit dem Get funktionieren. Das funktioniert jedenfalls bei TNMHTTP so. Hier könnte es analog so sein.
-
Auc ist etwas an der Logik nicht so ganz ok
Beim ersten Lauf wird geprüft, ob HTTP-Connect ist.Wenn ja wird die Connection beendet.
Dann wird der Response abgesetzt.
Auf eine nicht bestehende Verbindung??
Wozu dann die Prüfung bei jedem Durchlauf?
Wann wird die Verbindung erstellt?