質問

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;
}
役に立ちましたか?

解決

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

他のヒント

WSDL を解析するのが、おそらくこれを行う最も簡単な方法です。WCF を使用すると、実行時に WSDL をダウンロードし、基本的にコードを通じて svcutil を実行し、最終的に動的に生成されたプロキシの構造を確認することもできます。見る http://blogs.msdn.com/vipulmodi/archive/2006/11/16/dynamic-programming-with-wcf.aspx ランタイム生成プロキシの例については、

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top