Pergunta

Existe uma maneira simples de consultar um serviço web para ver quais mensagens ele suporta? A aplicação C # .NET Estou trabalhando em necessidades para ser capaz de lidar com uma versão mais antiga do serviço web, que não implementa a mensagem que estou tentando enviar. O serviço web não expõe um número de versão, então o plano B é para ver se a mensagem é definido.

Eu estou supondo que eu posso apenas fazer uma solicitação HTTP para a WSDL e analisá-lo, mas antes de eu ir por esse caminho, eu quero ter certeza de que não há uma abordagem mais simples.

Update: Eu decidi para obter o WSDL e receber mensagens diretamente. Aqui está o rascunho para obter todas as mensagens:

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;
}
Foi útil?

Solução

Eu tenho certeza WSDL é a maneira de fazer isso.

Outras dicas

Analisando o WSDL é provavelmente a maneira mais simples de fazer isso. Usando WCF, também é possível fazer o download do WSDL em tempo de execução, essencialmente executar svcutil sobre ele através de código, e acabar com um proxy gerado dinamicamente que você pode verificar a estrutura. Consulte http: //blogs.msdn .com / vipulmodi / Arquivo / 2006/11/16 / dynamic-programação-with-wcf.aspx para um exemplo de um proxy gerado pelo tempo de execução.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top