Autor Beitrag
Stephan.Woebbeking
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 97



BeitragVerfasst: Do 24.05.12 17:45 
Hallo,

ich versuche eine Post über die TIdHTTP Komponente abzusetzen:

ausblenden 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 := E.Message;
              line := IntToStr( httpConnector.ResponseCode ) + ' : ' + httpConnector.ResponseText;
            endend;


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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19285
Erhaltene Danke: 1743

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 97



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19285
Erhaltene Danke: 1743

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 97



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19285
Erhaltene Danke: 1743

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 97



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 97



BeitragVerfasst: Do 31.05.12 14:46 
Hier die anderen drei...
Einloggen, um Attachments anzusehen!
Stephan.Woebbeking Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 97



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19285
Erhaltene Danke: 1743

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 97



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 97



BeitragVerfasst: 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