Web サービスにクエリを実行して、サポートされているメッセージを確認する簡単な方法はありますか? 私が取り組んでいる C# .NET アプリケーションは、送信しようとしているメッセージを実装していない古いバージョンの Web サービスを処理できる必要があります。Web サービスはバージョン番号を公開しないため、プラン B はメッセージが定義されているかどうかを確認することです。
WSDL に対して HTTP 要求を作成して解析するだけでよいと想定していますが、その道をたどる前に、もっと簡単な方法がないことを確認したいと思います。
更新: 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;
}