AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Generic List über SOAP

Ein Thema von Postman1986 · begonnen am 21. Apr 2010 · letzter Beitrag vom 21. Apr 2010
 
Postman1986

Registriert seit: 24. Jul 2007
Ort: Trier
31 Beiträge
 
#1

Generic List über SOAP

  Alt 21. Apr 2010, 08:50
Hi,

ich möchte gern einen Delphi basierten Dienst schreiben, der einige Methoden bereitstellt die von einem C# Client aus genutzt werden können.

Dazu habe ich einen SOAP Server in Delphi erstellt der den Webservice anbietet. Das funktioniert soweit ganz gut, die vorgenerierten Testmethoden wie EchoDouble etc. können ohne Probleme in C# importiert und genutzt werden, mein Problem tritt jetzt beim Versuch auf, eine generische Liste zu exportieren.

Der Delphi Server erstellt zwar ohne zu zögern die wsdl Datei, Visual Studio bemängelt beim Import dann aber die "<" und ">" Tags der generic List Deklaration (was hinsichtlich validem XMLs ja auch sein gutes Recht ist).

Die Frage ist nun, wie man eine generische Liste sauber über SOAP exportieren kann.


Hier die Implementation der Delphi Server Funktion:
Delphi-Quellcode:
function TJamSOAPWebService.GenericList(const Value: TList<string>): TList<string>; stdcall;
var
  myString: string;
begin
  myString := 'Hey :)';
  Value.Add(myString);
  Result := Value;
end;

Der generierte XML Code (relevanter Teil):
XML-Code:
<types>
&#8722;
<xs:schema targetNamespace="urn:JamSOAPWebServiceIntf">
&#8722;
<xs:simpleType name="TEnumTest">
&#8722;
<xs:restriction base="xs:string">
<xs:enumeration value="etNone"/>
<xs:enumeration value="etAFew"/>
<xs:enumeration value="etSome"/>
<xs:enumeration value="etAlot"/>
</xs:restriction>
</xs:simpleType>
&#8722;
<xs:complexType name="TDoubleArray">
&#8722;
<xs:complexContent>
&#8722;
<xs:restriction base="soapenc:Array">
<xs:sequence/>
<xs:attribute ref="soapenc:arrayType" n1:arrayType="xs:double[]"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
&#8722;
<xs:complexType name="TMyEmployee">
&#8722;
<xs:sequence>
<xs:element name="LastName" type="xs:string"/>
<xs:element name="FirstName" type="xs:string"/>
<xs:element name="Salary" type="xs:double"/>
</xs:sequence>
</xs:complexType>
&#8722;
<xs:complexType name="TList<System.string>">
&#8722;
<xs:complexContent>
&#8722;
<xs:extension base="TEnumerable<System.string>">
<xs:sequence/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:schema>
&#8722;
<xs:schema targetNamespace="urn:Classes">
&#8722;
<xs:complexType name="TList">
<xs:sequence/>
</xs:complexType>
</xs:schema>
</types>

Der Fehler:
Code:
Error: Invalid 'name' attribute value 'TList<System.string>': 'The '<' character, hexadecimal value 0x3C, at position 5 within the name, cannot be included in a name.'.

Gruß Daniel
Daniel
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:32 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