Árvore de páginas

Um arquivo WSDL possui a definição de todas as estruturas que envolvem um Web Service. Neles estão definidos quais são os tipos de dados envolvidos, as mensagens, operações, endereço do servidor que receberá a requisição, versão de SOAP suportados, entre outras coiasas.

A classe AdvPL TWsdlManager, ao fazer o parse de um WS, identifica todas essas informações e monta em memória essas estruturas. Uma vez definida a operação que será realizada, a classe já identifica como deve ser montada a mensagem a ser enviada, informando através dos métodos da classe o que deve ser definido, e, após enviado o comando ao servidor, irá fazer o parse da reposta recebida.

O parse da resposta irá identificar a mensagem que foi recebida do servidor. Caso tenha recebido um SOAP Fault (mensagem de erro padrão do SOAP), irá preencher as propriedades cujo nome iniciam com cFault com os valores recebidos na mensagem. Caso contrário, irá verificar se a mensagem está de acordo com o que foi definido no documento WSDL.

Não havendo erros na mensagem, através do método GetParsedResponseépossível obter um string com os campos e valores em um formato fácil de ser decodificado. Já atráves do método GetSoapResponse é possível pegar o XML da maneira que foi recebido do servidor.

Se na estrutura da resposta tiver uma tag any, o que permite ter qualquer coisa nesse ponto, todo esse conteúdo será ignorado e não aparecerá na reposta devolvida pelo método GetParsedResponse, mas o conteúdo total pode ser obtido pelo método GetSoapResponse.

Existem casos em que o envio da mensagem foi feito com sucesso, o recebimento da resposta também, mas o parse da resposta dá erro, o que faz com que o retorno do método SendSoapMsg seja .F..

Para essa situação, é possível desligar o parse da resposta, colocando o valor .F. na propriedade lProcResp. Assim, a classe não irá verificar a mensagem de resposta, o que fará o retorno do método GetParsedResponse seja uma string vazia; em caso de SOAP Fault, as propriedades que iniciam com cFault também ficarão com string vazia.

Em compensação, o método GetSoapResponse irá retornar a mensagem exata que foi recbida do servidor. Com esse valor é possível fazer em AdvPL o parse da resposta e dar continuidade à operação, enquanto é verificado o motivo do erro no parse.

Existem servidores de WS que enviam alguma informação no cabeçalho da mensagem SOAP, mas pela definição do documento WSDL não deveria haver informação alguma. Nesses casos deve ser verificado com o servidor de WS o porque desse envio e, se for o caso, pedir atualização do documento WSDL.

Caso seja um erro no parse da reposta, deve ser aberto um chamado para a equipe de tecnologia corrigir o motivo do erro, mas com o parse desligado é possível dar continuidade na operação.

A classe TWsdlManager faz a leitura do WSDL dinamicamente, não necessitando ter que fazer atualização alguma em estruturas do client WS, pois elas são internas, o que faz com haja foco somente na regra de negócio.

  • Sem rótulos