WSDL mit NuSOAP generieren - Struktur mit verschiedenen Typen zurückgeben (int, string, array of structs)

8

Ich möchte einige Dinge über SOAP abfragen, indem ich WSDL mit NuSOAP erzeuge.
Ich weiß, dass es viele Fragen bezüglich des Themas gibt, aber ich hatte keinen Erfolg, die Codes an mein spezielles Problem anzupassen.

Es ist mir gelungen, WSDL-Code zu generieren, der nur ein Array von Strukturen zurückgibt (assoziatives Array), ABER Ich möchte lieber ein Objekt (struct) zurückgeben, das eine Integer-Variable, eine String-Variable UND ein Array enthält Strukturen .

Also, das ist der Code, der für die Rückgabe eines Arrays von Strukturen gilt:

%Vor%

In einer C # -Konsolenanwendung, nach dem Hinzufügen einer Web-Referenz namens "StuffService" mit der "? wsdl" an die entsprechende URL, wo diese PHP-Datei gefunden werden kann, funktioniert dieser Code, ich kann die Stuff_array-Werte wie abfragen das:

%Vor%

Das ist cool, ABER ich möchte diesen Code entwickeln, um ein Objekt wie dieses zurückzugeben:

%Vor%

Was ist der entsprechende NuSOAP-Code dafür?
Vielen Dank!! :)

Ich hoffe, ich könnte klarstellen, was ich erreichen möchte: eine Struktur zurückgeben, die ein int, eine Zeichenfolge und ein Array von Strukturen enthält, aber nicht wissen, wie man den entsprechenden NuSOAP-Code dafür schreibt. Auf diese Weise konnte ich zuerst den responseCode überprüfen und mit den entsprechenden Fehlermeldungen umgehen ODER das stuffArray ausgeben.

    
Sk8erPeter 08.08.2011, 17:54
quelle

1 Antwort

11

Nach langen Stunden des Experimentierens fand ich die Lösung!

Also geben wir eine Struktur zurück, die drei Member enthält - einen int responseCode, einen String responseMessage und ein Array von Structs namens stuffArray im Beispiel - via SOAP mit NuSOAP (PHP) sieht so aus, ich gebe einige Kommentare in den Code ein mache es eindeutiger:

%Vor%

Geben Sie dieser Datei einen Namen, zum Beispiel getStuffComplex.php , und kopieren Sie diese Datei dann irgendwo auf Ihren Webserver, und merken Sie sich ihren Pfad.
Zum Beispiel ist ein Domainname auf meinem lokalen Webserver http://soap.local , und der oben erwähnte PHP-Code kann unter http://soap.local/getStuffComplex.php erreicht werden.

Nehmen wir an, Sie möchten die Funktion getStuffs () in einem C # -Code über einen SOAP-Client von einer Konsolenanwendung unter Visual Studio 2010 aufrufen. In diesem Fall müssen Sie die folgenden Schritte ausführen:

  1. Erstellen Sie ein neues Konsolenanwendungsprojekt
  2. Klicken Sie mit der rechten Maustaste auf "Referenzen" - "Service-Referenz hinzufügen"
  3. Klicken Sie auf "Erweitert ..."
  4. Klicken Sie auf "Webverweis hinzufügen ..."
  5. Fügen Sie den Pfad der URL der zuvor gespeicherten PHP-Datei (mit dem Inhalt oben) ein und fügen Sie die Zeichenfolge "? wsdl" in das URL-Feld ein. Zum Beispiel in meinem Fall: http://soap.local/getStuffComplex.php?wsdl
  6. Klicken Sie auf den grünen Rechtspfeil ( "Go" ) oder drücken Sie die Eingabetaste, nachdem Sie das URL-Feld ausgefüllt haben. Wenn die Methode getStuff () gefunden wird, ist die Situation hoffnungsvoll.
  7. Geben Sie der Referenz auf der rechten Seite einen Namen (Web-Referenzname), z. B. "StuffServiceComplex" (ich verwende diesen Namen in meinem Code), und drücken Sie die Eingabetaste. Jetzt müssen Sie es unter "Webreferenzen" sehen.
  8. Kopieren Sie den folgenden Code in Program.cs und testen Sie ihn, indem Sie F5 drücken oder auf das grüne Symbol "Wiedergabe" klicken.

Der C # -Code:

%Vor%

Die Ausgabe:

%Vor%

Ich hoffe, das hilft jemandem, der Probleme damit hatte, PHP und SOAP und .NET zusammenzubringen.

(Hinweis: Achten Sie bei der Verwendung von Akzenten oder Sonderzeichen auf die Zeichencodierung. Standardmäßig kann ANSI verwendet werden (Zeichenkodierungen müssen jedoch identisch sein).)

    
Sk8erPeter 08.08.2011, 22:49
quelle

Tags und Links