![]() |
Indy 9: Was bedeutet diese Exception?
Liste der Anhänge anzeigen (Anzahl: 1)
Siehe angehängtem Screenshot. Wird ausgelöst bei einem IdHTTP.Post. Das Ziel ist ein PHP-Script. Das Script selbst funktioniert auf anderen Servern normal. Also was hat es mit dieser Exception auf sich?
EDIT: Es handelt sich um eine Exception des Typs EIdHTTPProtocolException. |
Re: Indy 9: Was bedeutet diese Exception?
Mag sein das idHttp den DOCType nicht kennt.
Es hatte schonmal jemand das Problem - ![]() Es steht aber leider nicht dort wie es gelöst wurde. Vielleicht eine kleine Konfigurationsänderung? Vielleicht antwortet ja noch der Fragensteller: romeo_isaksson (at) hotmail.com Ich weiß, hilft nicht viel... Grüße Klaus [edit=sakura] [url]-Tags für besseres Layout Mfg, sakura[/edit] |
Re: Indy 9: Was bedeutet diese Exception?
Der soll sich doch für den Doctype gar nicht interessieren. Der soll nur den ASCII-Ruscht engegennehmen. Doctypes interessieren doch mehr die Browser, oder?
|
Re: Indy 9: Was bedeutet diese Exception?
Aber liest idhttp.post nicht zumindest den Header der Seite
zu der etwas hingeschickt werden soll? Grüße Klaus |
Re: Indy 9: Was bedeutet diese Exception?
Im Header steht aber kein doctype...
|
Re: Indy 9: Was bedeutet diese Exception?
EBEN! Der Doctype gehört zum HTML-Head und nicht zum HTTP-Protokoll. Das zugrundeliegende PHP-Script ist von mir und überhaupt nicht fähig, einen Doctype auszugeben.
Deswegen bin ich ja so ratlos. Weil die Exception aber kommt bevor der ResponseString gefüllt ist kann ich nicht mal schauen ob PHP da evtl. eine Fehlermeldung auswirft und der Doctype daher kommt. EDIT: Also ich habs jetzt soweit eingegrenzt: Der Webserver meldet den Statuscode -1 (oder gar keinen und -1 ist ein Indy-Default) und diese eine Zeile mit dem Doctype. Aber warum ist mir ein Rätsel. Kennt jemand einen Proxy mit dem ich den übertragenen Datenruscht anschauen kann? Also zwischen meinen Client und den Webserver hängen und alles mitloggen was da so gequasselt wird. |
Re: Indy 9: Was bedeutet diese Exception?
Wenn der Client und der Server über Ethernet oder DSL
kommunizieren, sollte Ethereal da eigentlich helfen den ip Trafic mitzuschneiden. Wenn Du Zugriff auf den Server hast und der unter Linux läuft, hilft Dir da tcpdump weiter. Die tcpdump Daten kannst Du dann auch mit Ethereal anschauen. Grüße Klaus |
Re: Indy 9: Was bedeutet diese Exception?
Ok, danke für den Tip mit Ethereal bzw. Wireshark. Jetzt bin ich schon mal ein Stück weiter. Der Server wirft tatsächlich eine Fehlermeldung (html-Anteil rausgekürzt):
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 400 Bad Request Your browser sent a request that this server could not understand. Anscheinend schicke ich einen ungültigen Request. Komischerweise scheint das sämtliche Testserver nicht zu interessieren, da funktioniert es wunderbar. Könnte es eine bestimmte Kombination von Indy-Request-Parametern und Serverkonfigurationen sein (Apache2, PHP5)? Ich lasse die Indy-Request-Felder weitestgehend auf Default, setze lediglich ContentType := 'multipart/form-data'. Habt ihr Vorschläge wo ich ansetzen kann mit der Suche? |
Re: Indy 9: Was bedeutet diese Exception?
Kannst du den Request in einem Browser schicken? Wenn ja, mach das mal, zeichne mit Ethereal auf und vergleiche mit dem von deinem Programm gesendeten Daten. Dann gleichst du deine Angaben (z.B. und vor allem UserAgent) denen des Browsers an und spielst mit den Einstellungen herum, bis es funktioniert. Dann wirst du herausgefunden haben, worans lag.
|
Re: Indy 9: Was bedeutet diese Exception?
Âlso ich denke es könnte daran liegen, daß Indy immer HTTP 1.0 verwenden will. Ich hab schon ProtocolVersion auf pv1_1 aber der POST-Request geht trotzdem als 1.0 raus. Obs das ist weiß ich im Moment noch nicht. Aber ein "Anfangsverdacht". Nur wie bekomme ich Indy 9 TIdHTTP dazu, das 1.1er Protokoll zu verwenden?
|
Re: Indy 9: Was bedeutet diese Exception?
mal ein wenig OT,
Habt Ihr alle keine Enter Taste um mal manuell einen Zeilenumbruch herbeizuführen. So ließt sich das echt schlecht. Ich habe "nur" einen 17" Monitor. Grüße Klaus |
Re: Indy 9: Was bedeutet diese Exception?
Für
die Unzulänglichkeiten deiner Hardware können wir ja nix :) |
Re: Indy 9: Was bedeutet diese Exception?
na so extrem auch nicht ;0)
wieder OT: Aus der Indy9 Hilfe: Zitat:
Grüße Klaus |
Re: Indy 9: Was bedeutet diese Exception?
Na gut ich weiß ja nicht obs überhaupt am 1.0 bzw. 1.1 liegt.
Ich hab nur mal das verglichen was ein IE so requestet und was meine App macht. IE:
Code:
Meins:
GET / HTTP/1.1
Accept: */* Accept-Encoding: gzip, deflate Accept-Language: de Connection: Keep-Alive Host: test.tld If-Modified-Since: Fri, 19 May 2006 10:09:28 GMT; length=922 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Code:
Der User-Agent ist gefaked zu Testzwecken aber daran liegts nicht. Das Modified-Sience ist ja nicht zwingend. Der Host ist jetzt nur mal hier im Forum gefaked weil sonst meckert mein Chef wenn ich die Links poste ;)
POST HTTP/1.0
Accept: */* Accept-Charset: Accept-Charset: ISO-8859-1, utf-8;q=0.66, *;q=0.66 Accept-Language: de Connection: Keep-Alive Host: test.tld User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; de) Opera 8.0 Also soo verschieden sind die eigentlich nicht. Aber nicht vergessen: Mit meinem lokal laufenden Apache Testserver gibts keine Probleme. Was zum Geier kann einen auf Windows laufenden Apache nur so von einem auf Linux (Debian) laufenden Apache unterscheiden, daß er sich an den Requests verschluckt? Ich dachte erst, es wären die Zeilenumbrüche. Aber sowohl der IE als auch meine App verwenden da \r\n. Was kanns denn noch sein? |
Re: Indy 9: Was bedeutet diese Exception?
Ähm, nur mal so ne Frage am Rande: Was ist eigentlich der Unterschied zwischen
POST HTTP/1.0 und POST / HTTP/1.0 ??? Ich habe mal die Indy HTTPClient Demo hergenommen und meine App so hingebogen daß die exakt identischen Requests schicken. Da ist der zusätzliche Slash ist der einzige Unterschied den ich noch sehen kann. Wo kann man diesen zusätzlichen Slash reinbasteln beim IdHTTP? Ist das der Request.Referer? |
Re: Indy 9: Was bedeutet diese Exception?
Danke an Alle die geholfen haben. Ich sollte Freitags nicht mehr so lange arbeiten :) Ich hatte IdHTTP.Host auf die Ziel-URL gesetzt und beim Post statt der URL einen Leerstring. Man man man ich werd alt ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz