4D v16.3WEB SERVICE CALL |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v16.3
WEB SERVICE CALL
WEB SERVICE CALL
O comando WEB SERVICE CALL se utiliza para chamar um serviço web enviando uma petição HTTP. Esta petição contém a mensagem SOAP criada previamente utilizando o comando WEB SERVICE SET PARAMETER . Toda chamada posterior ao comando WEB SERVICE SET PARAMETER provocará a criação de uma nova petição. A execução de um comando WEB SERVICE CALL também apaga todo resultado do serviço web chamado anteriormente e o substitui com os novos resultados. Acesso em modo seguro (SSL) Note que este comando pode utilizar um certificado servidor (ver o comando HTTP SET CERTIFICATES FOLDER). Se este certificado não é válido (vencido ou revogado), a variável sistema OK toma o valor e se devolve o erro 901 "Certificado servidor inválido". Pode interceptar este erro utilizando um método de gestão de erros instalado pelo comando ON ERR CALL. Em nomMetodo, passe o nome do método remoto (que pertence ao serviço Web) que deseja executar. Em nomEspaço, passe o espaço do nome XML (namespace) utilizado para a petição SOAP. Para maior informação sobre os nomes de espaços XML, consulte o Manual de Desenho. O parâmetro opcional tipoComplexo especifica a configuração dos parâmetros web Service enviados ou recebidos (definidos utilizando os comandos WEB SERVICE SET PARAMETER e WEB SERVICE GET RESULT). O valor do parâmetro tipoComplexo depende do modo de publicação do serviço web (DOC ou RPC, ver o Manual de Desenho) e seus próprios parâmetros. Em tipoComplexo, deve passar uma das seguintes constantes, que ficam no tema Serviços Web (Cliente):
Cada constante corresponde a uma “configuração”. Una configuração representa uma combinação entre o modo de publicação (RPC/DOC) e os tipos de parâmetros (entrada/saída, simples ou complexos) implementado. Nota: lembre que a característica “entrada” ou “saída” dos parâmetros se avalia desde o ponto de vista do método proxy/serviço web:
A seguinte tabela mostra todas as configurações possíveis, assim como as constantes correspondentes:
Nota: apesar do fato de que os tipos XML são complexos, os arrays de dados são tratados por 4D como tipos simples. Esta configuração é a mais fácil de utilizar. Neste caso, o parâmetro tipoComplexo contém a constante Web Service Dynamic ou é omitido. Neste caso, o parâmetro tipoComplexo contém a constante Web Service Manual In. Com esta configuração, deve passar “manualmente” ao serviço Web cada elemento XML fonte na forma de um BLOB, com a ajuda do comando WEB SERVICE SET PARAMETER. Exemplo C_BLOB($1) Neste caso, o parâmetro tipoComplexo contém a constante Web Service Manual Out. Cada parâmetro de saída será retornado pelo serviço Web na forma do elemento XML armazenado em um BLOB. Recupera este parâmetro utilizando o comando WEB SERVICE GET RESULT.Depois pode analizar o conteúdo do BLOB recebido utilizando os comandos XML de 4D. C_BLOB($0) Neste caso, o parâmetro tipoComplexo contém as constantes Web Service Manual. Cada parâmetro de entrada e de saída deve ser armazenado na forma dos elementos XML nos BLOBs, como foi descrito nas duas configurações anteriores.
C_BLOB($0) Um método proxy de chamada de um serviço web DOC é similar a um método proxy de chamada de um serviço web RPC utilizando os parâmetros de entrada e de saída complexos
C_BLOB($0) Nota: no caso dos serviços web DOC, o valor das strings (“MeuXMLEntrada” e “MeuXMLSaída”) passadas como parâmetros não importa, é possível inclusive passar strings vazias"". De fato, estes valores não são utilizados na petição SOAP contida no documento XML. É obrigatório passar estes parâmetros.
• É bom se acostumar com os conteúdos das petições SOAP a enviar ao servço web utilizando uma ferramenta de teste online (por exemplo, http://soapclient.com/soaptest.html). Este tipo de ferramenta é utiliza para gerar os formulários de teste HTML, a partir do WSDL do serviço web.
O parâmetro * pode ser utilizado para otimizar chamadas. Quando for passado, o comando não fecha a conexão utilizada pelo processo ao final de sua execução. Neste caso, a próxima chamada a WEB SERVICE CALL reutilizará a mesma conexão se for passa o parâmetro *, etc. Para fechar a conexão, simplesmente execute o comando WEB SERVICE CALL sem o parâmetro *. Este mecanismo pode ser utilizado para acelerar bastante os processos em caso de chamadas sucessivas a vários serviços web no mesmo servidor, especialmente em uma configuração WAN (via Internet, por exemplo). Note que este mecanismo depende do parâmetro “keep-alive” do servidor web. Este parâmetro geralmente define um número máximo de petições através da mesma conexão, e pode até mesmo negar petições. Se as petições WEB SERVICE CALL seguirem uma atrás da outra na mesma conexão alcançarem este número máximo, ou se as conexões keep-alive não forem permitidas, 4D criará uma nova conexão para cada petição. Se a petição for corretamente encaminhada, e o Web Service a aceitar, a variável sistema OK assume o valor 1. Do contrário, assume o valor 0 e um erro é devolvido.
Ver também
|
PROPRIEDADES
Produto: 4D HISTÓRIA
Modificado: 4D v11 SQL ARTICLE USAGE
Manual de linguagem 4D ( 4D v16) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||