Frage

Gibt es eine einfache Möglichkeit, einen Web-Service zu sehen, abzufragen, welche Nachrichten sie unterstützen? Die C # .NET-Anwendung, die ich auf Bedürfnisse gerade arbeitete in der Lage sein, eine ältere Version des Web-Service zu handhaben, die die Nachricht nicht implementieren ich zu senden bin versucht. Der Web-Dienst keine Versionsnummer aussetzen, so Plan B zu sehen ist, wenn die Nachricht definiert ist.

Ich gehe davon kann ich nur eine HTTP-Anforderung für die WSDL machen und es zu analysieren, aber bevor ich auf diesem Weg gehen, möchte ich sicherstellen, es ist kein einfacher Ansatz.

Update: Ich habe beschlossen, die WSDL zu erhalten und Nachrichten direkt zu bekommen. Hier ist der Rohentwurf für alle Nachrichten bekommen:

HttpWebRequest webRequest = (HttpWebRequest) WebRequest.Create( "http://your/web/service/here.asmx?WSDL" );
webRequest.PreAuthenticate = // details elided
webRequest.Credentials = // details elided
webRequest.Timeout = // details elided
HttpWebResponse webResponse = (HttpWebResponse) webRequest.GetResponse();

XPathDocument xpathDocument = new XPathDocument( webResponse.GetResponseStream() );
XPathNavigator xpathNavigator = xpathDocument.CreateNavigator();

XmlNamespaceManager xmlNamespaceManager = new XmlNamespaceManager( new NameTable() );
xmlNamespaceManager.AddNamespace( "wsdl", "http://schemas.xmlsoap.org/wsdl/" );

foreach( XPathNavigator node in xpathNavigator.Select( "//wsdl:message/@name", xmlNamespaceManager ) )
{
    string messageName = node.Value;
}
War es hilfreich?

Lösung

Ich bin mir ziemlich sicher, dass WSDL ist die Art und Weise, dies zu tun.

Andere Tipps

die WSDL-Parsing ist wahrscheinlich der einfachste Weg, dies zu tun. Mit WCF, ist es auch möglich, die WSDL zur Laufzeit zum Download im Wesentlichen svcutil auf mich durch den Code auszuführen, und mit einem dynamisch generierten Proxy am Ende, dass Sie die Struktur überprüfen. Siehe http: //blogs.msdn .com / vipulmodi / Archiv / 2006/11/16 / dynamic-Programmierung-mit-wcf.aspx für ein Beispiel einer Laufzeit generierte Proxy.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top