2008-09-17 10 views
0

Webサービスを照会して、サポートするメッセージを確認する簡単な方法はありますか?私が取り組んでいるC#.NETアプリケーションは、送信しようとしているメッセージを実装していない古いバージョンのWebサービスを処理できる必要があります。 Webサービスはバージョン番号を公開しないので、Plan Bはメッセージが定義されているかどうかを確認します。メッセージ一覧のWebサービスを照会しますか?

私は、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; 
} 

答えて

0

私はWSDLがこれを行う方法だと確信しています。

2

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

関連する問題