- Criado por Bianca Ferreira, última alteração por Igor Andrade em 11/12/2019
Você está vendo a versão antiga da página. Ver a versão atual.
Comparar com o atual Ver Histórico da Página
« Anterior Versão 33 Próxima »
O SOAP (Simple Object Access Protocol) é um protocolo utilizado em trocas de informação entre sistemas, ou seja, um formato padronizado para o envio de estruturas entre diferentes serviços. Esse padrão permite a comunicação entre plataformas totalmente diferentes, como por exemplo, C++, Java e Ruby sem muito trabalho. No Cronapp, é possível utilizar esse serviço de forma low-code nos blocos de programação, fazendo com que o bloco criado possa ser utilizado em outra aplicação de forma simples, além de agilizar ainda mais o desenvolvimento dos projetos.
Pré-requisitos
Antes de começar é necessário ter certeza de que se possui um ambiente preparado para a realização do exemplo. Abaixo estão os principais requisitos necessários.
Requisitos:
- Projeto do tipo web ou web-mobile criado. Caso haja dúvidas em relação a como criar esse tipo de projeto acesse o link (Criar novo projeto).
Visão Geral
Aqui veremos como ativar o serviço de SOAP e gerar o arquivo WSDL, permitindo que outras aplicações utilizem esse serviço. Ao fim do tutorial criaremos um segundo projeto que requisitará o serviço SOAP disponibilizado pelo primeiro projeto, alimentando o campo Resultado (Figura 1).
Figura 1 - Cálculo realizado via serviço SOAP
Passos
Configuração do Bloco de programação
Para ativar esse serviço em um bloco será necessário criar um bloco do tipo servidor, essa funcionalidade só está disponíveis em blocos de programação do tipo servidor. Caso haja alguma dúvida em relação a como criar um bloco de programação, clique aqui.
Nesse exemplo, utilizaremos um bloco de programação para retornar a adição de 2 números via SOAP. Após desenvolver o bloco de programação (função "Soma" da figura 2.1), abra a janela de propriedades do Bloco de programação e ative a opção Disponibilizar como SOAP (item 1 da Figura 2.1) para que o campo Endereço SOAP (item 2) possa ser usado.
Figura 2.1 - Opção de configurar bloco(servidor)
Além disso, ative as permissões do bloco de programação no campo Segurança, selecionando a opção todos nos campos Permitir Executar, Permitir Obter e Permitir Inserir. (Figura 2.2)
Figura 2.3 - Permissões de segurança das configurações do bloco de programação servidor
Permissão de acesso ao serviço
As permissões de segurança afetam diretamente o serviço SOAP, por isso, precisamos liberar o caminho que será gerado para o serviço. Acesse a funcionalidade Permissão de Segurança, no menu Projeto e clique no botão Nova Permissão (item 1 da Figura 3.1).
Figura 3.1 - Acesso a funcionalidade Permissão de segurança do Cronapp
Na janela de permissão, altere os campos: Tipo, selecione permitAll
; Caminho insira "/services/**
" (sem aspas), liberando todos os serviços SOAP gerados por esse sistema, e por fim, no campo Método selecione ALL
. (Figura 3.2)
Salve e rode novamente o sistema, caso esteja em execução.
Figura 3.2 - Liberando acesso a tudo dentro de services
Obtendo o WSDL
Rode o projeto e execute-o, abra o navegador e adicione após o endereço gerado "/services/**", ficando assim: https://<url da aplicação>/services/. A página irá exibir todos os serviços SOAP do sistema.
Figura 4.1 - Lista de serviços SOAP
Clique no link do serviço Calculo
para ser encaminhado para o endpoint do WSDL: https://app-19-33-45754.ide.cronapp.io/services/Calculo?wsdl (exemplo do tutorial).
<wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://Calculo" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" name="CalculoService" targetNamespace="http://Calculo"> <wsdl:types> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://Calculo" attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://Calculo"> <xs:element name="Soma" type="tns:Soma" /> <xs:element name="SomaResponse" type="tns:SomaResponse" /> <xs:complexType name="Soma"> <xs:sequence> <xs:element minOccurs="0" name="arg0" type="xs:string" /> <xs:element minOccurs="0" name="arg1" type="xs:string" /> </xs:sequence> </xs:complexType> <xs:complexType name="SomaResponse"> <xs:sequence> <xs:element minOccurs="0" name="return" type="xs:string" /> </xs:sequence> </xs:complexType> <xs:element name="Exception" type="tns:Exception" /> <xs:complexType name="Exception"> <xs:sequence> <xs:element minOccurs="0" name="message" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:schema> </wsdl:types> <wsdl:message name="Exception"> <wsdl:part element="tns:Exception" name="Exception"></wsdl:part> </wsdl:message> <wsdl:message name="Soma"> <wsdl:part element="tns:Soma" name="parameters"></wsdl:part> </wsdl:message> <wsdl:message name="SomaResponse"> <wsdl:part element="tns:SomaResponse" name="parameters"></wsdl:part> </wsdl:message> <wsdl:portType name="Calculo"> <wsdl:operation name="Soma"> <wsdl:input message="tns:Soma" name="Soma"></wsdl:input> <wsdl:output message="tns:SomaResponse" name="SomaResponse"></wsdl:output> <wsdl:fault message="tns:Exception" name="Exception"></wsdl:fault> </wsdl:operation> </wsdl:portType> <wsdl:binding name="CalculoServiceSoapBinding" type="tns:Calculo"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="Soma"> <soap:operation soapAction="" style="document" /> <wsdl:input name="Soma"> <soap:body use="literal" /> </wsdl:input> <wsdl:output name="SomaResponse"> <soap:body use="literal" /> </wsdl:output> <wsdl:fault name="Exception"> <soap:fault name="Exception" use="literal" /> </wsdl:fault> </wsdl:operation> </wsdl:binding> <wsdl:service name="CalculoService"> <wsdl:port binding="tns:CalculoServiceSoapBinding" name="CalculoPort"> <soap:address location="https://app-19-33-45754.ide.cronapp.io/services/Calculo" /> </wsdl:port> </wsdl:service> </wsdl:definitions>
Consumir o serviço SOAP
Após o a requisição do cliente consumidor, o provedor do serviço retornará sua resposta em formato JSON, como podemos ver abaixo. Por isso, será necessário obter o campo "_return" do objeto.
{ "somaResponse":{ "_returnSpecified":true, "_return":"25" } }
Teste do serviço SOAP em outro projeto
Usaremos o próprio Cronapp para testar o serviço, Criamos um novo projeto e importamos o serviço SOAP que geramos nos passos anteriores. Para mais detalhes de como importar e configurar um serviço SOAP de terceiros, acesse o tutorial Consumindo Web Service SOAP.
Para esse teste, usamos o bloco de programação soma, gerado automaticamente pelo Cronapp após importar o serviço SOAP. O bloco soma recebe 2 parâmetros obtidos dos campos de entrada de texto "Primeiro número" e "Segundo número" (Figura 1) que estão em uma página do Projeto de teste.
O bloco soma faz uma requisição ao projeto que provê o serviço e retorna o resultado em formato JSON, como explicado no tópico anterior, por isso estamos usando o bloco Obter campo do Json. Ao final, campo entrada de texto Resultado (Figura 1) será alimentado com o retorno do serviço (Figura 1).
Figura 5.1 - Bloco que faz a requisição ao projeto que provê o serviço
Nessa página
- Sem rótulos