Autor |
Beitrag |
Stephan.Woebbeking
Beiträge: 97
|
Verfasst: Do 24.05.12 17:45
Hallo,
ich versuche eine Post über die TIdHTTP Komponente abzusetzen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| data := TStringList.Create; data.Add( 'duration=' + IntToStr( packList.Get[ 0 ].Duration ) ); data.Add( 'start' ); try line := httpConnector.Post( UPDATE9046_HTTP_PROTOCOL + Connector.ip + ' ' + UPDATE9046_POST_UPD_START, data ); MemoLogger.AddToLog( line ); pos1 := Pos( 'http://', line ); pos1 := PosEx( '/', line, pos1 ); loc := RightStr( line, Length( line ) - pos1 + 1 ); MemoLogger.AddToLog( 'loc: ' + loc ); except on E: Exception do begin line := IntToStr( httpConnector.ResponseCode ) + ' : ' + httpConnector.ResponseText; end; end; |
Die Zeile mit dem "Post" generiert die EIdHTTPProtocolException, liefert mir im Dialog aber ein 'HTTP/1.1 201 Created'. Ich brauche den Text, den der Server zurückliefert. Ich würde ihn in der Rückgabe des Post erwarten, aber da kommt aufgrund der Exception ja nix raus. Ich habe etwas ähnliches bereits gefunden:
forums2.atozed.com/v...ic.php?f=7&t=145
kann das aber nicht ganz zuordnen. Ich weiß auch nicht wirklich was derjenige gemacht hat um das Problem zu lösen?
In der Message meiner Exception steht nichts, das hab ich mir angeschaut. Hat jemand eine Idee für mich?
Danke,
Stephan
|
|
jaenicke
Beiträge: 19285
Erhaltene Danke: 1743
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 25.05.12 10:09
Hast du denn einmal versucht einen Stream für die Daten der Seite zu übergeben? Vielleicht wird der ja gefüllt bevor die Exception ausgelöst wird.
Da in deinem Link steht, dass jemand eine Änderung eingecheckt hat, damit die Exception bei dem HTTP-Code gar nicht mehr kommt:
Hast du denn auch wirklich die aktuellste Indy-Version?
|
|
Stephan.Woebbeking
Beiträge: 97
|
Verfasst: Fr 25.05.12 15:08
Hmmm, wo bekomme ich den Stream her? Die Post Methode will den nicht haben...
Und das mit der Version ist eben das, was ich nicht zuordnen kann. Mein Delphi (2007) sagt als Version für die Indy Komponenten 10.0.0.17. Allerdings habe ich kein Update gemacht - nicht das ich wüßte. Und ich kann mir schlecht vorstellen, dass Delphi von Haus aus mit einer Komponente ausgeliefer wird, die sich noch im Entwicklungsstatus befindet?!?
vG,
Stephan
|
|
jaenicke
Beiträge: 19285
Erhaltene Danke: 1743
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 25.05.12 16:56
Dann lade doch einfach die aktuelle Indy-Installation herunter und nutze die statt deiner alten. Die mit Delphi mitgelieferte Version ist logischerweise stark veraltet...
indy.fulgan.com/ZIP/
Stimmt, Post kennt bei mir auch keinen Stream-Parameter, nur Get. Hmm...
|
|
Stephan.Woebbeking
Beiträge: 97
|
Verfasst: Do 31.05.12 12:45
Hallo, ich hab mir das Paket jetzt geladen, durchblicke das Ganze aber nicht... Doku (zur Installation) hab ich gar nicht gefunden. Nach einigem Suchen habe ich die dclIndyCore160.bpl installieren können, warum gerade die verstehe ich aber nicht, war einfach die einzige die ich (bisher) gefunden habe, die sich ohne Fehler installieren ließ. Dort fehlt jetzt aber die TIdHTTP Komponente. Wo bekomme ich die denn jetzt wieder her? Auch die Komponenten TIdTrivialFTPServer und TIdEchoUDP hatte ich vorher verwendet und jetzt sind sie nicht mehr vorhanden. Hast du da noch ein paar Tips für mich?
Danke,
Stephan
|
|
jaenicke
Beiträge: 19285
Erhaltene Danke: 1743
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 31.05.12 13:33
Ich habe Indy schon lange nicht mehr installiert, deshalb weiß ich nicht genau wie die Reihenfolge ist, in der die Packages installiert werden müssen. Eigentlich wird beim Versuch der Installation aber angezeigt welches fehlt. Das muss man dann einfach vorher installieren.
Ich packe einfach die Unterverzeichnisse im Indy Verzeichnis in den Bibliothekspfad, packe z.B. die IdHttp Unit in die uses und benutze die einfach: Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| uses IdHttp;
var HttpLoader: TIdHttp; PageContents: String; begin HttpLoader := TIdHttp.Create; try PageContents := HttpLoader.Get('http://www.example.com'); finally HttpLoader.Free; end; end; | Dadurch habe ich das ganze Problem nicht...
|
|
Stephan.Woebbeking
Beiträge: 97
|
Verfasst: Do 31.05.12 14:45
Jetzt ist mir die ganze IDE symbolisch "um die Ohren geflogen".... Schau mal die Screenshots, vor allem der letzte (nächster Eintrag) macht was her.
Einloggen, um Attachments anzusehen!
|
|
Stephan.Woebbeking
Beiträge: 97
|
Verfasst: Do 31.05.12 14:46
Hier die anderen drei...
Einloggen, um Attachments anzusehen!
|
|
Stephan.Woebbeking
Beiträge: 97
|
Verfasst: Do 31.05.12 17:18
Entfernen der TIdHTTP Komponente hilft, aber sobald ich eine nackte Instanz der Komponente auf das Formular lege, bekomme ich diese Reaktion. Gar nicht schön...
Stephan
|
|
jaenicke
Beiträge: 19285
Erhaltene Danke: 1743
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 31.05.12 17:42
Dann erzeuge die halt manuell und gut ist es. Wozu lange herumärgern?
Herauszufinden was da passiert, würde relativ lange dauern, wenn man das anfängt zu debuggen.
|
|
Stephan.Woebbeking
Beiträge: 97
|
Verfasst: Fr 01.06.12 10:23
Ich habe jetzt lediglich die visuelle Komponente entfernt und lege sie im Form.Create "manuell" an. Das hilft an der Stelle schon mal weiter. Der ursprüngliche Fehler mit der Exception bei 201 kommt aber weiterhin, für mich kein erkennbarer Unterschied. Darüberhinaus ist mir aufgefallen, dass der letzte Log-Eintrag in IdHTTP von 2005 ist - also keine Spur von dem Bugfix von dem Post von 02.2009. Wie passt das zusammen?
Stephan
|
|
Stephan.Woebbeking
Beiträge: 97
|
Verfasst: Do 12.07.12 15:49
Mittlerweile ist das Problem gelöst; das Update war nicht vollständig, da waren noch Reste im System, so dass ich de facto noch mit der alten Version gearbeitet habe. Und die hat tatsächlich das Problem, dass sie an der genannten Stelle eine Exception wirft. Mit der neuen geht es dann. Daraufhin wurde die Installationsanleitung angepasst um speziell darauf hinzuweisen.
Vielen Danke,
Stephan
|
|