Announcement

Collapse
No announcement yet.

Rückgabewert mit TRemotable; falsche Syntax in XML?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Rückgabewert mit TRemotable; falsche Syntax in XML?

    Ich habe ein Webservice mit D6.2 Ent erstellt. Für den Rückgabewert verwende ich einen von TRemotabele abgeleiteten Datentyp. Ein ebenfalls mit Delphi erstellter Client funktioniert problemmlos.
    Alle anderen Clients (Java, .Net) funktionieren jedoch nicht.
    Im .NET WebService Studio bekomme ich folgende Fehlermeldung: System.Reflection.TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. ---> System.InvalidOperationException: Fehler im XML-Dokument (2,790). ---> System.InvalidOperationException: Das referenzierte Element mit der ID '1' wurde nicht im Dokument gefunden.

    Der XML-String sieht wie folgt aus:
    <PRE>
    <?xml version="1.0" encoding="utf-16"?>
    <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/">
    <NS1:GetVfeSpResponse xmlns:NS1="urn:ICS2ZUSDIEIntf-IICS2ZUSDIE" xmlns:NS2="urn:ICS2ZUSDIEIntf">
    <return href="#1" />
    <NS2:TVfeSp id="1" xsi:type="NS2:TVfeSp">
    <Kz xsi:type="xsd:string">0123</Kz>
    <FNr xsi:type="xsd:string">1234567</FNr>
    <Sts xsi:type="xsd:int">0</Sts>
    <Mtlg xsi:type="xsd:string">OK</Mtlg>
    <Info xsi:type="xsd:int">0</Info>
    <Vfe xsi:type="xsd:string">
    </Vfe>
    <Sp xsi:type="xsd:string">077401</Sp>
    </NS2:TVfeSp>
    </NS1:GetVfeSpResponse>
    </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    </PRE>
    Vergleiche mit funktionierenden Webservices - alle nicht mit Delphi programmiert - haben ergeben, dass dort die XML-Syntax anders aussieht: die Zeile </NS1:GetVfeSpResponse> müsste lt. diesen Vergleichen nicht nach </NS2:TVfeSp> sondern nach <return href="#1" /> kommen.
    Kann mir bitte jemand weiterhelfen? Vielen Dank im Voraus!

  • #2
    Hallo,

    &gt;..Fehler im XML-Dokument ...

    beim Thema Web Service schwächeln alle Delphi-Versionen, sobald die Strukturen etwas komplizierter werden. Kann der .NET-Client zugreifen, wenn <b>soRootRefNodeToBody</b> (THTTPSoapPascalInvoker) aktiviert wird

    Comment


    • #3
      Hallo,

      die Options-Einstellungen in HTTPSoapPascalInvoker sind für das XML-Format entscheidend. Mit soRootRefNodeToBody funktioniert der Zugriff mit dem .NET-Client. Habe auch div. andere Einstellungen tlw. erfolgreich ausprobiert. In der Hilfe habe ich leider nur 4 der 9 Optionen gefunden.
      Danke für die Unterstützung!

      Comment

      Working...
      X