Manoel Frederico da Silva / Product Manager & MAGIC Evangelist / Magic Software Brasil
Neste post, veremos como consumir webServices em soluções UniPaaS.
O UniPaaS possui dois comandos para consumir (chamar) webServices via protocolo SOAP: Invoke WebSvc e Invoke WebSvc Lite. Haverá um capítulo da série “Eu vou Para o UniPaaS” que detalhará o comando “Invoke WebSvc”. Por isso, vamos nos ater agora ao “Invoke WebSvc Lite” apenas.
Inicialmente, é necessário possuir o WSDL do WebService. Pode ser em formato de arquivo, ou a própria URL dele.
Ao selecionar o comando Invoke WebSvc Lite, o assistente será exibido para que seja informado o WSDL do serviço web e selecionado qual método deste serviço deseja executar:
Uma vez que tenha sido escolhido o método (usa-se um comando Invoke WebSvc Lite separado para cada método desejado), um serviço do tipo SOAP LITE é registrado no UniPaaS, com o endereço do WebService:
Este modelo de vinculação permite que o endereço do serviço seja parametrizável externamente (via MAGIC.INI) sem necessidade de alteração no programa.
Este é o serviço UniPaaS que será associado ao comando:
As propriedades Soap Action, Style, Operation e NameSpace são preenchidas pelo assistente automaticamente e a rigor não devem ser alteradas. Estas outras propriedades tem as seguintes funções:
Return Value = Informar um campo UniPaaS para receber o valor de retorno da chamada ao WebService.
Successfully = Informar um campo lógico (boleano) do UniPaaS, que receberá TRUE se a chamada foi bem sucedida, ou FALSE caso contrário.
Fault = Informar um campo texto (string) do UniPaaS, que receberá a descrição do erro ocorrido, se a chamada falhar.
Caso o método chamado aceite argumentos (parâmetros) de entrada, deve-se fazer um ZOOM no item [arguments] e preencher as informações solicitadas:
NOTA: esta chamada será síncrona no contexto onde for executado.
O exemplo acima mostra o consumo de um WebService estilo RPC.
Quando o método escolhido for do estilo DOCUMENT:
Significa que o método terá no máximo um argumento, obrigatoriamente um XML, e retorno como resposta também um XML. Neste caso, o assistente UniPaaS cria na pasta “SoapClientModulesSOAPLITE” os esquemas (.xsd) que definem como são os xmls de argumento e de resposta:
Muitos são os casos em que é preciso (ou desejável) consumir um serviço web (WebService). Por exemplo, serviços web que permitem envio de SMS. Existem vários, em geral pagos, como este: http://www.human.com.br/tecnologia/sms
Mas existem também alguns gratuitos, como: http://www.naoligo.com.br/
O endereço deste WebService gratuito é:
Serviço: http://www.naoligo.com.br/ws/server.php
WSDL: http://www.naoligo.com.br/ws/server.php?wsdl
Acesse neste link um projeto exemplo (UniPaaS 1.9g ou UniPaaS JET) que permite enviar SMS através de serviço gratuito, usando o comando “Invoke WebSvc Lite”.
NOTA: Antes de abrir o projeto, é preciso registrar o serviço SOAP LITE (nome: Soap ServerSendSMS Service, endPoint: http://www.naoligo.com.br/ws/server.php) no UniPaaS Studio (menu: Options -> Settings -> Services), ou diretamente no arquivo MAGIC.INI:
[MAGIC_SERVICES]
Soap ServerSendSMS Service = SOAP LITE,http://www.naoligo.com.br/ws/server.php,,
Diferenças Entre “Invoke WebSvc” e “Invoke WebSvc Lite”
Recursos disponíveis no “Invoke Web Svc” que não estão presentes no “Invoke Web Svc Lite”:
- Acesso a endereços HTTPS
- Certificados digitais do lado do cliente
- Anexos nas mensagens
- Padrão WS-I de transmissão segura
Acredito que este webservice gratuito não esteja mais disponível… sabe de algum outro?
Olá.
Aqui, tem uma lista de WS públicos:
https://stackoverflow.com/questions/1958048/public-soap-web-services
Aqui você encontrará outras opções: https://stackoverflow.com/questions/1958048/public-soap-web-services
Ola, baixei o aplicativo e realizei o cadastro, porem ao enviar ocorre o seguinte erro, Falha na transmissão: Unexpected return Content-Type: text/html
O serviço deles (www.naoligo.com.br) deve estar retornando uma resposta em formato HTML, ao invés de SOAP.
Pode ser um problema temporário.
Se não se resolver, somente entrando em contato com eles e perguntando o que ocorre.
Pode ser o webservice fora do ar. Tente de novo, ou recrie o comando Invoke Websvc, usando o assistente e o endereço http://www.naoligo.com.br/ws/server.php?wsdl
Bom dia Frede,
Me desculpe.. deu certo sim, este erro deve ser por causa de um proxy em que eu estava conectado.
Obrigado.
bom dia Frede,
baixei o exemplo e configurei meu arquivo.ini com o serviço “Soap ServerSendSMS Service = SOAP LITE,http://www.naoligo.com.br/ws/server.php,,”, mas esta me retornando “error reading socket”, será que é por não ter a DLL “mgwsock.dll” na pasta de gateways ? tem alguma dica sobre o erro ?
Obrigado.