Laden...

foreach auf WSDL Datentyp

Erstellt von UNeverNo vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.772 Views
UNeverNo Themenstarter:in
153 Beiträge seit 2007
vor 12 Jahren
foreach auf WSDL Datentyp

Da ich nur PHP-webspace habe, bin ich grad dabei in Silverlight einen PHP-WSDL-webservice zu konsumieren.
Allerdings kann man auf die Datentypen natürlich kein foreach anwenden, da er kein GetEnumerator hat. Gibt es eine Möglichkeit ihm das beizubringen, oder muss ich da einen Count dranbasteln zum manuellen iterieren?

Grüße,
Chris

"Wenn Architekten genauso bauen würden, wie Programmierer programmieren, dann würde der erste Specht, der vorbeikommt, die Zivilisation zerstören." (Steven Weinberg)

B
225 Beiträge seit 2008
vor 12 Jahren

Hiho,

WSDL ist doch im Prinzip nur XML. Kannst Du dein WSDL in ein XML-Document laden? Dort kannst Du die Nodes mit foreach durch gehen.

Gruß
Boris

296 Beiträge seit 2007
vor 12 Jahren

Hallo UNeverNo,

ich bin was Webservices angeht nicht gerade der Profi hab mir aber letztes Semester ein Fach 'Verteilte Systeme' angehört.

WSDL ist doch nur doch nur die Sprache zur Beschreibung des Webservices, also dessen Schnittstellen. Die Daten selbst werden doch wieder anders übertragen, bpsw. im SOAP-Format.

Und wenn du da auf der Webservice-Seite ein Array reingibst, sollte auf der Silverlight-Client-Seite auch ein Array rauskommen, das natürlich auch IEnumerable implementiert.

Oder was hast du genau vor?

Grüße

3.430 Beiträge seit 2007
vor 12 Jahren

Hallo UNeverNo,

ich hab in meinem Projekt WCF als Webservice verwendet.
Im ASPX Projekt und WPF Projekt konnte ich dann den Webservice einfach als Service Reference hinzufügen.
Dort kann man dann auswählen was für einen Datentyp man haben will.
D.h. in XML wird einfach eine Aufzählung von den Elementen gemacht.
Was das am Server für ein Listen-Typ war ist dabei egal.
Beim Client wird das ohnehin wieder in den festgelegten Typ gemappt.

Also kurz gesagt kann man da auswählen ob er eine List<T>, Array, usw. verwenden soll.

In Silverlight sollte das Ganze gleich bleiben (auch wenn SL manche Übertragungs-protokolle nicht unterstützt).

Gruß
Michael

U
1.578 Beiträge seit 2009
vor 12 Jahren

Man kann sich auch mit dem wsdl Tool von VS aus der wsdl Datei C# Klassen erzeugen lassen, dann braucht man nur noch diese verwenden 😃

Bietet sogar die Möglichkeit des PropertyChanged.

Der Aufruf:

wsdl.exe [URL]http://192.168.12.34/myAPI/myAPI.wsdl[/URL] /parameters:wsdl.xml

Die wsdl.xml wie ich sie immer verwende:

<wsdlParameters xmlns="http://microsoft.com/webReference/">
  <webReferenceOptions>
    <codeGenerationOptions>properties enableDataBinding</codeGenerationOptions>
  </webReferenceOptions>
</wsdlParameters>

Die Klassen kann man dann Instantiieren und benutzen, und der tatsächliche Aufruf des WebService ist dann weg gekapselt in diesen Klassen 😃