![]() |
SOAP HTTPRIO asynchroner Methodenaufruf
Hallo DP,
Ich möchte einen WebService abfragen. Aus der WSDL-Datei habe ich mittels Delphi WSDL-Importer eine Klasse erzeugt und frage das ganze per THTTPRIO ab. Status- und Versionabfragen funktionieren problemlos. Nur wenn ich Daten holen möchte - und das können ne ganze Menge sein - bekomme ich einen TimeOut. In der Doku zu dem WebService steht, mal solle die Daten asynchron abrufen. Der Beispielcode, geschrieben in C#, zeigt einen Aufruf ala AsyncValues(...) . So eine Methode gibt es aber der WSDL-Definition nicht und auch die erzeugte Klasse besitzt keine solche Methode. Wie kann man einen WebService asynchron abfragen? Danke und Gruß gmmc |
AW: SOAP HTTPRIO asynchroner Methodenaufruf
Hallo,
ich habe gerade das gleiche Problem (mit Delphi 2006), mein nicht funktionierender Ansatz den ich im Web gefunden habe ist der hier:
Code:
Es gibt wohl einen Windows Bug durch den sich der Timeout nicht setzen lässt.
procedure TGdvConnectForm.HTTPRIO1HTTPWebNode1BeforePost(
const HTTPReqResp: THTTPReqResp; Data: Pointer); var timeout1,timeout2,timeout3:integer; begin // HTTPReqResp.ConnectTimeout:=500000; // HTTPReqResp.SendTimeout:=500000; // HTTPReqResp.ReceiveTimeout:=500000; timeout1:=1000000; timeout2:=1000000; timeout3:=1000000; InternetSetOption(Data, INTERNET_OPTION_RECEIVE_TIMEOUT, Pointer(@timeout1), SizeOf(timeout1)); InternetSetOption(Data, INTERNET_OPTION_CONNECT_TIMEOUT, Pointer(@timeout2), SizeOf(timeout2)); InternetSetOption(Data, INTERNET_OPTION_SEND_TIMEOUT, Pointer(@timeout3), SizeOf(timeout3)); end; Bist du vielleicht schon weiter? |
AW: SOAP HTTPRIO asynchroner Methodenaufruf
Was nennst Du viel?
1KB 1MB 1GB Ich übertrage von kleinen Request bis hin zu einem kompletten Datenbackupdate ohne Probleme... Mavarik |
AW: SOAP HTTPRIO asynchroner Methodenaufruf
Bei mir sind es PDF's wahrscheinlichh 300-500kb, allerings ist die Internetgeschwindigkeit aller Anwender nicht gerade toll (gibt glaube ich sogar noch einen mit ISDN) und ich sitze auch an einer 2mbit Lwitung fpr 50 Leut, kann das also prima testen und kriege immer weiter Timeouts :(
Daher brauche ich einen lange Timeout die 10 Sekunden die Standarsmäßig hinterlegt sind sind zu wenig. Habe gerade mal probiert den Aufruf in einen Thread zu packen weil es im folgendem Link empfohlen wird, half aber auch nicht. ![]() Welches Delphi nutzt du und wie hast du den Timout geändert? |
AW: SOAP HTTPRIO asynchroner Methodenaufruf
Ich nehme Delphi 2007...
Habe es NIE gebraucht den Timeout zu verändern und übertrage durchaus größere Datenmengen... Mavarik |
AW: SOAP HTTPRIO asynchroner Methodenaufruf
Du Glücklicher :?
|
AW: SOAP HTTPRIO asynchroner Methodenaufruf
Zitat:
Ich denke Dein Problem liegt ganz wo anders... Mavarik |
AW: SOAP HTTPRIO asynchroner Methodenaufruf
Naja, die Testfunktion vom Webservice in der keien Datei übertreg wird funktioniert und der Entwickler von Ihm sagt bei ihm dauert es etwas 20 Sekunden.
Die Fehlermeldung ist eigentlich auch recht eindeutig:
Code:
Vielleicht liegt es am HTTPS, wobei ich mir das eigentlich nicht vorstellen kann.
Erste Gelegenheit für Exception bei $7C812AEB. Exception-Klasse ESOAPHTTPException mit Meldung 'The operation timed out - URL:https://**zensiert***.asmx - SOAPAction:http://tempuri.org/RechnungsAnfrage'. Prozess ConnectProject.exe (10480)
|
AW: SOAP HTTPRIO asynchroner Methodenaufruf
OK https hab ich nocht nicht versucht...
Zeig mal Deinen Remoteable Record Mavarik |
AW: SOAP HTTPRIO asynchroner Methodenaufruf
Sry, aber was ist ein Remoteable Record?
Meinst du die XML die versand wird? |
AW: SOAP HTTPRIO asynchroner Methodenaufruf
Zitat:
Delphi-Quellcode:
TRemoteUser = class(TRemotable)
Sowas....? Mavarik |
AW: SOAP HTTPRIO asynchroner Methodenaufruf
Achso, die httprio übergebe ich beim Aufruf mit dem Versuch vorher den Timeout zu ändern.
Code:
myCeService:=ceservice.GetServiceSoap(False,'',HTTPRIO1);
myCeResult:=myCeService.msgRechnungsAnfrage(myCeGlasabrechung,myCeAuthenticator);
Code:
Für die Übersicht wieder raus genommen.
|
AW: SOAP HTTPRIO asynchroner Methodenaufruf
WOW...
Viel.... Kompliziert... Ich mach mir daraus ein Record... Pack den mit zLibEx und schiebe nur ein TByteDynArray über die Leitung... Dadurch so gut wie 0 Overhead... Aber so wie DU das machst, sollte es auch gehen.^^ Nur die XML Datei wir viel länger... Mavarik |
AW: SOAP HTTPRIO asynchroner Methodenaufruf
Das ist über den Delphi WSDL Import gemacht und danach noch leicht von mir modifiziert, mache ich immer so.
Das Problem ist halt die HTTPrio, die verwendest du aber auch? |
AW: SOAP HTTPRIO asynchroner Methodenaufruf
Zitat:
Aber er hatte das wohl nur 5-mal oder so erwähnt... @Koolance Schaue mal, ob dir das hier weiter hilft. ![]() Ich selbst hatte das Glück nie viel mit Delphis halbherzigen WSDL-Krempel machen zu müssen. |
AW: SOAP HTTPRIO asynchroner Methodenaufruf
Zitat:
* SoapUI ('high level': Aufruf einzelner SOAP Service Methoden) * Fiddler (auf der HTTP Protokollschicht) * Wireshark (Datentraffic) Wenn der SoapUI Zugriff schon NICHT funktionieren würde, kann man davo ausgehen dass das Problem nicht in Delphi liegt. |
AW: SOAP HTTPRIO asynchroner Methodenaufruf
![]() Hatte ich schon probiert, wird aber komplett ignoriert. Bis jetzt kam ich mit den Delphi WS eigentlich ganz gu klar, nutze sie sogar under D6 und verwende jetzt nur 2006 weil die WS unter D6 kein HTTPS können. |
AW: SOAP HTTPRIO asynchroner Methodenaufruf
Delphi ist doof :-D
Ich habe gerade herausgefunden das trotz der Timeoutmeldung im Hintergrund der Datensatz abgeschickt wird. Jetzt lasse ich mir noch einen WS programmieren mit dem ich prüfen kann ob er angekommen ist und die Sache ist erledigt. Ist zwar keine tolle Lösung aber ich muss weiter kommen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:33 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