Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   URL aufrufen ohne Response (https://www.delphipraxis.net/200199-url-aufrufen-ohne-response.html)

TheSchuchii 28. Mär 2019 07:16

URL aufrufen ohne Response
 
Guten Tag!

Ich hätte da ein Problem mit URL aufrufen in Delphi und zwar: Sind Geräte über eine HTTP-Schnittstelle ansteuerbar und diese geben ein JSON-Feld zurück. Das Problem ist, dass ich nicht auf diese Rückgabe warten will da dies zu lange dauert. Momenten werden die mit der Indy TidHTTP Komponente mit der Funktion get also str:=idHTTP.get('URL') angesprochen. Jedoch wenn mehrere Geräte auf einmal bzw hintereinander Angesprochen werden ergibt sich eine zu lange Wartezeit.
Die Möglichkeit mit ShellExcute möchte ich nicht verwenden da das Programm später Plattform unabhängig laufen sollte.

Falls die TidHTTP oder eine andere Komponente dies bereits kann finde ich die Funktion einfach nicht

Klaus01 28. Mär 2019 07:29

AW: URL aufrufen ohne Response
 
.. Du könntest die Abfragen in Threads verlagern.

Grüße
Klaus

mjustin 28. Mär 2019 07:51

AW: URL aufrufen ohne Response
 
Neuere Delphi Versionen enthalten die PPL (Parallel Programming Library):


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
 aTask: ITask;
 ...
begin
 aTask := TTask.Create (procedure ()
   begin
     // führe den GET Request aus
     ...
     // mach etwas mit der Response
     ShowMessage (Response);
   end);
 aTask.Start;
end;
http://docwiki.embarcadero.com/RADSt...amming_Library

TheSchuchii 28. Mär 2019 08:17

AW: URL aufrufen ohne Response
 
Danke für die schnellen Antworten

Threads als Lösung sind mir bis jetzt nicht eingefallen, aber es funktioniert wunderbar

Danke nochmal!

TurboMagic 28. Mär 2019 16:44

AW: URL aufrufen ohne Response
 
Andere Lösung wären ICS open source Komponenten, die arbeiten auch ohne Threads asynchron. http://www.overbyte.eu

DieDolly 28. Mär 2019 17:39

AW: URL aufrufen ohne Response
 
Vielleicht habe ich ja einen Denkfehler. Aber sollte man in TTask-Tasks nicht auch mit dem Mainthread synchronisieren?
Das sage ich nur wegen dem Showmessage was unsynchronisiert ist.

mjustin 29. Mär 2019 08:39

AW: URL aufrufen ohne Response
 
Zitat:

Zitat von DieDolly (Beitrag 1429037)
Vielleicht habe ich ja einen Denkfehler. Aber sollte man in TTask-Tasks nicht auch mit dem Mainthread synchronisieren?
Das sage ich nur wegen dem Showmessage was unsynchronisiert ist.

Ja, das ShowMessage muss synchronisiert werden z.B. mit TThread.Queue (http://www.malcolmgroves.com/blog/?p=1678).
Oder man hat seine eigene threadsafe Version von ShowMessage im scope ;)

Delphi.Narium 29. Mär 2019 15:17

AW: URL aufrufen ohne Response
 
Statt idhttp.get(Url) idhttp.head(url) nehmen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:46 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz