Существует ли простой способ запроса веб-службы, чтобы узнать, какие сообщения она поддерживает? Приложение C # .NET, над которым я работаю, должно быть в состоянии обрабатывать старую версию веб-службы, которая не реализует сообщение, которое я пытаюсь отправить. Веб-служба не предоставляет номер версии, поэтому в Плане B проверяется, определено ли сообщение.
Я предполагаю, что могу просто сделать HTTP-запрос для WSDL и разобрать его, но прежде чем идти по этому пути, я хочу убедиться, что не существует более простого подхода.
Обновление:
Я решил получить WSDL и получать сообщения напрямую. Вот черновик для получения всех сообщений:
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;
}