0

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;
}
4

2 に答える 2

2

これを行う最も簡単な方法は、おそらく WSDL の解析です。WCF を使用すると、実行時に WSDL をダウンロードし、基本的にコードを使用して svcutil を実行し、動的に生成されたプロキシを作成して構造を確認することもできます。ランタイム生成プロキシの例については、https://docs.microsoft.com/en-us/archive/blogs/vipulmodi/dynamic-programming-with-wcfを参照してください。

于 2008-09-17T20:46:33.230 に答える
0

WSDL がこれを行う方法であると確信しています。

于 2008-09-17T20:13:37.473 に答える