.Net - Webservice ohne WSDL konsumieren

8

Wir haben ein neues Buchhaltungssystem, das Webservice-Schnittstellen für externe Clients bereitstellt. Ich möchte auf eine der Schnittstellen zugreifen, aber es gibt keine WSDL, also habe ich die Anfrage durch die Verwendung von HttpWebRequest erstellt und es funktioniert gut.

Um die Erstellung der Anfragen und das Parsen der Antwort zu erleichtern, möchte ich jedoch eine Art Auto-Funktion erstellen. Ich habe die Anfrage und Antwort Struktur in einer XSD-Datei. Irgendwelche Ideen?

Anfrageerstellung:

%Vor%     
Sys 23.05.2011, 11:59
quelle

2 Antworten

1

Nun, wenn Sie wirklich keine Möglichkeit haben, eine richtige WSDL-Datei zu bekommen, aber XSD: s, könnten Sie wahrscheinlich das Tool xsd.exe verwenden, um Klassen zu erstellen, die Ihren Anfrage- und Antworttypen zugeordnet sind.

So etwas (führen Sie dies in einer Visual Studio-Eingabeaufforderung aus)

%Vor%

Aber wirklich, versuchen Sie Ihr Bestes, um diese WSDL zu finden, es wird Ihr Leben viel einfacher machen.

    
CodingInsomnia 23.05.2011 12:31
quelle
0

Ich empfehle Ihnen Erstellen eine WSDL - Reverse-Engineer und erstellen Sie dann Ihre Webservices-Client-Stubs daraus.

Der Weg dahin:

  1. Ermitteln Sie die genaue Anfrage und Antwort, die der Webservice verwendet. Benutze Fiddler oder etwas ähnliches.

  2. Erstellen Sie einen WCF-Dienst, der die Anforderung und die Antwort approximiert.

  3. Erhalte die Ablaufverfolgung von das

  4. Vergleichen Sie (3) mit (1). Denken Sie daran, dass Sie XML Infoset Äquivalenz wollen. Ihre Namespace-Präfixe müssen beispielsweise nicht identisch sein. Ihre Namespaces müssen nicht am selben Ort angegeben werden. Aber die Elementnamen müssen genau gleich sein, und die xmlns-Strings müssen genau gleich sein. Ändern Sie den WCF-Dienst so, dass er dem Original besser entspricht. Starten Sie es neu, gehen Sie zu Schritt 3. Iterieren Sie so oft wie nötig.

  5. Weisen Sie Ihren WCF-Client auf den echten Webdienst

  6. hin
  7. Lehnen Sie sich zurück und entspannen Sie sich.

Ich habe das gemacht und es funktioniert. Es kann schwierig sein, wenn Sie nicht wissen, wie DataContract -Attribute das XML auf der Verbindung beeinflussen. Aber wenn du damit spielst, wirst du schnell die Einsicht gewinnen.

Aber wie ist es möglich, dass es ein SOAP-Service ist und es keine WSDL auf der Serviceseite gibt? Es könnte Ihnen eine Menge Arbeit ersparen, um Ihre Bemühungen, die echte WSDL zu finden, noch einmal zu verdoppeln.

    
Cheeso 23.05.2011 21:19
quelle

Tags und Links