Domanda

C'è un modo semplice per eseguire una query di un servizio web per vedere quali messaggi supporta?Il C# .NET applicazione che sto lavorando per essere in grado di gestire una versione precedente del servizio web, che non implementa il messaggio che sto cercando di inviare.Il servizio web non esporre un numero di versione, quindi il Piano B è quello di vedere se il messaggio è definito.

Sto assumendo che posso solo fare una richiesta HTTP per il WSDL e analizzare, ma prima di andare su questa strada, voglio fare in modo che non c'è un approccio più semplice.

Aggiornamento:Ho deciso di ottenere il WSDL e ricevere messaggi direttamente.Ecco la bozza per ottenere tutti i messaggi di:

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;
}
È stato utile?

Soluzione

Sono abbastanza sicuro che il WSDL è il modo per farlo.

Altri suggerimenti

L'analisi del WSDL è probabilmente il modo più semplice per fare questo.Utilizzo di WCF, è anche possibile scaricare il file WSDL in fase di runtime, essenzialmente eseguire svcutil su di esso tramite il codice, e finire con un generati dinamicamente proxy che si può controllare la struttura del.Vedere http://blogs.msdn.com/vipulmodi/archive/2006/11/16/dynamic-programming-with-wcf.aspx per un esempio di un runtime proxy generato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top