Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy 9: Nach einem IdHTTP.Post die Verbindung beenden (https://www.delphipraxis.net/71454-indy-9-nach-einem-idhttp-post-die-verbindung-beenden.html)

Codehunter 15. Jun 2006 14:43


Indy 9: Nach einem IdHTTP.Post die Verbindung beenden
 
Ich übergebe einem PHP-Script eine größere XML-Datenmenge per HTTP-Post. PHP ist mit der Verarbeitung eine Weile beschäftigt. Für die Validität sorge ich schon bei der Erzeugung der XML im Delphi-Programm. Darum muss ich mit dem Indy-Client nicht unbedingt auf das Ende des PHP-Scripts warten. PHP kann man ja temporär so einstellen daß es weiterläuft wenn der Client die Verbindung cancelt. Nur ist es auch möglich, den Indy-IdHTTP-Client zu canceln wenn er sein Post abgeschlossen hat? Also ohne Exception meine ich.

Ich hatte es schon umgekehrt versucht. Also mit PHP header() einen 3xx-Fehlercode senden nachdem der Post-Upload angekommen ist. Geht auch ganz gut nur wirft da Indy jedesmal eine Exception und die ganze Routine bricht ab.

Waldteufel 15. Jun 2006 16:39

Re: Indy 9: Nach einem IdHTTP.Post die Verbindung beenden
 
Hi Codehunter.

Sende doch einen 200er Code, das heißt nämlich OK. 300er Codes sind für Weiterleitungen u.ä. ;-)

Code:
<?php
  header("HTTP/1.1 200 OK")
  echo " "; // Damit der Header auch gesendet wird.
?>
EDIT: Abgesehen davon kann man Exceptions doch abfangen, oder? :gruebel:

Codehunter 15. Jun 2006 18:24

Re: Indy 9: Nach einem IdHTTP.Post die Verbindung beenden
 
Komischerweise werden die 200er von Indy komplett ignoriert und es wird weiter gewartet.

Waldteufel 15. Jun 2006 19:02

Re: Indy 9: Nach einem IdHTTP.Post die Verbindung beenden
 
Zitat:

Zitat von Codehunter
Komischerweise werden die 200er von Indy komplett ignoriert und es wird weiter gewartet.

Ach stimmt ja. Dann wird ja auf die zurückgelieferten Daten gewartet... :wall:

Aber die Exception müsste sich - wie gesagt - abfangen lassen.

DGL-luke 15. Jun 2006 22:50

Re: Indy 9: Nach einem IdHTTP.Post die Verbindung beenden
 
ähm...
man kann doch sicher dem webserver sagen, "bitte die verbindung beenden, ich habe dem UA nichts mehr zu sagen"?

ansonsten gibt es sicher einen event (onsend, onupload, onpost?), der dir sagt, dass jetzt gepostet worden ist. dann haust du einfach ein Sender.Abort rein.

Elfriede 15. Jun 2006 22:58

Re: Indy 9: Nach einem IdHTTP.Post die Verbindung beenden
 
Hast Du versuchsweise mal auf HTTP 1.0 umgeschaltet? Das von Dir beschriebene Szenario könnte auch mit dem von HTTP 1.1 eingeführten Connection-Handling zusammenhängen.



hasige Grüße,
Elli


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:42 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