2016-08-01 5 views
2

Ich versuche, diese SOAP mit einer .NET-Webanwendung mit Visual Studio zu konsumieren.Wie kann der SOAP-Webservice verwendet werden, der .xsd-Schemas als Parameter verwendet?

Meine Frage ist, wenn meine wsdl nur zwei Methoden beschreibt; 'processMessage' und 'processOCIMessage'. Und die Nachricht, die sie erwarten, ist eine Zeichenfolge, die zu einem von 30 xsd-Schemas passt, was ist der beste Weg, um die API zu konsumieren?

Zum Beispiel, wenn ich einige Benutzerinformationen erhalten wollte. Ich brauche eine Zeichenfolge zu schreiben, die dieses Schema passt:

<xs:complexType name="UserGetRequest19"> 
    <xs:annotation> 
     <xs:documentation> 
     Request to get the user information. The response is either 
     UserGetResponse19 or ErrorResponse. 
     </xs:documentation> 
    </xs:annotation> 
    <xs:complexContent> 
     <xs:extension base="core:OCIRequest"> 
     <xs:sequence> 
      <xs:element name="userId" type="UserId"/> 
     </xs:sequence> 
     </xs:extension> 
    </xs:complexContent> 
    </xs:complexType> 

Ich weiß, wie in einfachen Parameter zu übergeben, wie in der answer to this question beschrieben. Aber wie mache ich das mit Schemas?

Gibt es Werkzeuge in Visual Studio, die diese zu benutzerfreundlichen C# -Klassen/Modellen machen? Oder muss ich XML-Strings manuell eingeben, die Sonderzeichen entziffern und als Parameter an 'processMessage' übergeben?

Antwort

1

Verwenden Sie zuerst die integrierten Tools, um eine Visual Studio Web Reference beginnend mit der WSDL hinzuzufügen. Dies sollte Ihre clientseitigen Proxies und die Datenübertragungsklassen erstellen. Sie erhalten schließlich eine Klasse mit einer Eigenschaft für processMessageReturn als Zeichenfolge und eine andere Klasse mit einer Eigenschaft für processOCIMessageReturn, auch als Zeichenfolge.

Als nächstes führen Sie die XSDs, an denen Sie interessiert sind, durch xsd.exe mit dem Schalter /c aus, um Ihre Klassen zu generieren.

Von dort an müssen Sie Code schreiben, der Klassen, die Sie im zweiten Schritt erstellt haben, instanziiert und füllt. Serialisieren Sie die "top" -Klasse in eine Zeichenfolge mit einem XmlSerializer und weisen Sie dann diese Zeichenfolge der im ersten Schritt genannten Eigenschaft zu. Sie müssen sich keine Gedanken darüber machen, XML als Textknoten zu codieren, da dies von dem im Framework integrierten XML-Serializer übernommen wird.

Verwandte Themen