Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20.6
WEB SERVICE CALL
|
WEB SERVICE CALL ( urlAcesso ; soapAction ; nomeMetodo ; nomeEspaço {; tipoComplexo {; *}} ) | ||||||||
Parâmetro | Tipo | Descrição | ||||||
urlAcesso | String |
![]() |
Acesso URL ao Webservice | |||||
soapAction | String |
![]() |
Conteúdos do campo SOAPAction | |||||
nomeMetodo | String |
![]() |
Nome do método | |||||
nomeEspaço | String |
![]() |
nomeespaço XML | |||||
tipoComplexo | Inteiro longo |
![]() |
Configuração de tipos complexos (tipos simples se omitido) | |||||
* | Operador |
![]() |
Não fechar a conexão | |||||
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.
Em urlAcesso, passe a URL completa que permite acessar ao serviço web (não confunda esta URL com a do arquivo WSDL, que descreve o serviço web).
Acesso em modo seguro (SSL)
Se desejar utilizar um serviço web em modo seguro utilizando SSL, passe https:// na frente da URL ao invés de http://. Esta configuração ativa automaticamente a conexão em modo seguro.
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 soapAction, passe o conteúdo do campo SOAPAction da petição. Este campo contém geralmente o valor “ServiceName#MethodName”.
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):
Constante | Tipo | Valor |
Web Service dynamic | Inteiro longo | 0 |
Web Service manual | Inteiro longo | 3 |
Web Service manual in | Inteiro longo | 1 |
Web Service manual out | Inteiro longo | 2 |
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:
Parâmetros entrada | ||
Parâmetros saída | Simples | Complexo |
Simples | Web Service Dynamic | Web Service Manual In |
(modo RPC) | (modo RPC) | |
Complexo | Web Service Manual Out | Web Service Manual |
(modo RPC) | (modo RPC ou DOC) |
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.
Os parâmetros enviados e as respostas recebidas podem ser manipulados diretamente, sem processamento prévio.
Consulte o exemplo do comando WEB SERVICE GET RESULT
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.
Depende de você formatar o BLOB inicial como um elemento XML válido. Este BLOB deve conter como primeiro elemento o primeiro elemento “filho” do elemento <Body> da petição final.
Exemplo
C_BLOB($1)
C_BOOLEAN($0)
SET WEB SERVICE PARAMETER("MeuXMLBlob";$1)
CALL WEB SERVICE("http://meu.dominio.com/meu_servico";"MinhaActionSoap";"meuMetodo";
"http://meu.nomespaco.com/";Web Service manual in)
GET WEB SERVICE RESULT($0;"MinhaVarSaida";*)
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.
Exemplo
C_BLOB($0)
C_BOOLEAN($1)
SET WEB SERVICE PARAMETER("MinhaVarEntrada";$1)
CALL WEB SERVICE("http://meu.dominio.com/meu_serviço";"MinhaAcaoSoap";"meuMetodo";
"http://meu.nomespaco.com/";Web Service manual out)
GET WEB SERVICE RESULT($0;"MeuXMLSaida";*)
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)
C_BLOB($1)
SET WEB SERVICE PARAMETER("MeuBlobXMLEntrada";$1)
CALL WEB SERVICE("http://meu.dominio.com/meu_servico";"MinhaAccionSoap";"meuMetodo";
"http://meu.nomespaco.com/";Web Service manual)
GET WEB SERVICE RESULT($0;"MeuXMLSaida";*)
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
A única diferença entre estas duas configurações é o nivel do conteúdo XML dos parâmetros BLOB passados e recebidos. Desde o ponto de vista de 4D, a construção e o envio da petição SOAP são idênticos.
C_BLOB($0)
C_BLOB($1)
SET WEB SERVICE PARAMETER("MeuXMLEntrada";$1)
CALL WEB SERVICE("http://meu.dominio.com/meu_servico";"MinhaActionSoap";"meuMetodo";
"http://meu.nomespaco.com/";Web Service manual)
GET WEB SERVICE RESULT($0;"MeuXMLSaida";*)
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.
Para utilizar um serviço web publicado em modo DOC (ou em modo RPC com tipos complexos), é recomendável proceder desta forma:
• É 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.
Produto: 4D
Tema: Web Services (Client)
Número
778
Modificado: 4D v11 SQL
Renomear: 4D v13 (CALL WEB SERVICE)
Modificado: 4D v14
Manual de linguagem 4D ( 4D v20)
Manual de linguagem 4D ( 4D v20.1)
Manual de linguagem 4D ( 4D v20.2)
Manual de linguagem 4D ( 4D v20.3)
Manual de linguagem 4D ( 4D v20.4)
Manual de linguagem 4D ( 4D v20.5)
Manual de linguagem 4D ( 4D v20.6)