Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi CGI Webservice unter D2009 (https://www.delphipraxis.net/135308-cgi-webservice-unter-d2009.html)

mischerr 8. Jun 2009 21:24


CGI Webservice unter D2009
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo.

Ich habe hier ein Problem an dem ich mich etwas festgebissen habe...

Es geht darum einen WebService (CGI) unter D2009 zu erstellen welcher auf einem W32 Apache laufen soll. Zum Test habe ich einen lokalen XAMP Lite als auch einen entfernten XAMP in Standardkonfiguration installiert. Die von D2009 erstellten EXE liegt im cgi-bin und auf die WSDL-Dateien kann in Browser clientseitig zugegriffen werden. WSDL-Import zum Erstellen eines D2009 Testclient funktioniert.

Das Problem: Egal was ich mache beim clientseitigen Aufruf des Services bekomme ich immer eine Exception: "XML document must have a top level element. Zeile: 0".

Ich habe mich wirklich an die Tutorials von Sakura (hier) und auch von den Kollegen vom Delphi-Treff gehalten.

Im Log des Apaches laufen die Requests wie folgt ein:
Zitat:

127.0.0.1 - - [08/Jun/2009:22:20:23 +0200] "POST /cgi-bin/SOAPService.exe/soap/IFarben HTTP/1.1" 200 722

Hat jemand dazu eine Idee oder kann es mal unter < D2009 testen?


Michael

mjustin 9. Jun 2009 05:43

Re: CGI Webservice unter D2009
 
Zitat:

Zitat von mischerr
Hat jemand dazu eine Idee oder kann es mal unter < D2009 testen?

Mit einem HTTP Proxy wie z.B. Don's Proxy
http://donsproxy.sourceforge.net/

könnte man den HTTP Request mit der XML Nachrichtt abfangen und mal näher ansehen.

mischerr 9. Jun 2009 12:09

Re: CGI Webservice unter D2009
 
Eigentlich sollte mich dieser Teil der Implementierung ja nicht interessieren müssen, aber ich habe beim experimentieren mal folgendes geloggt:

Request:
Zitat:

<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:NS2="urn:uSendMailIntf">
<NS1:Merge xmlns:NS1="urn:uSendMailIntf-ISendMail">
<AData href="#1"/>
</NS1:Merge>
<NS2:TMergeIn id="1" xsi:type="NS2:TMergeIn">
<S1 xsi:type="xsd:string">ABC</S1>
<S2 xsi:type="xsd:string">123</S2>
</NS2:TMergeIn>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Response:
Zitat:

<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultactor/>
<faultcode>SOAP-ENV:Server</faultcode>
<faultstring>Ein XML-Dokument muss ein Element der obersten Ebene enthalten.....Zeile: 0..</faultstring>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Hier wird eine Funktion "function Merge(Data: TMergeIn): string" aufgerufen. TMergeIn enthält nur 2 Strings und erbt von TRemotable.

Es scheint fast so, als ob die Server-EXE das XML erst garnicht bekommt... :gruebel:

Michael

mischerr 10. Jun 2009 18:40

Re: CGI Webservice unter D2009
 
Scheint ein Bug in D2009 zu sein. Server Code mit D2007 kompiliert funktioniert.
Hängt wahrscheinlich mit QC #73549 und #71291 zusammen.

#71291 ist mit Update 3 gefixt, #73549 ist noch offen.
Scheint ale müsste ich auf Update 5 warten... :-(


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