Páginas filhas
  • Geração de client em AdvPL - 2º Passo

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Migration of unmigrated content due to installation of a new plugin
Composition Setup
import.css=/download/attachments/327912/newLayout.css
Portuguese

Pagetitle
Geração de client em AdvPL - 2º Passo
Geração de client em AdvPL - 2º Passo

Geração de client em AdvPL - 2º Passo

2º Passo - Gerar o código-fonte AdvPL, do client, usando o assistente do TOTVS Development Studio.

 

Abrangência
ERP 10 e 11



Ao ser gerado um código-fonte client para um Web Service, este código-fonte conterá as definições dos métodos do serviço, a(s) estrutura (s) utilizada (s) e a(s) classe(s) intermediária(s) de uso interno para montagem e desmontagem da(s) estrutura(s); visando o encapsulamento de todos os tratamentos de envio e recebimento de dados através de pacotes SOAP.

O código-fonte gerado através do assistente de criação de fonte, deve preferencialmente ser gerado e compilado em um arquivo exclusivo, destinado único e exclusivamente a este código. E, por tratar-se de uma classe AdvPL gerada a partir da definição de um serviço, não deve ser inserida e/ou alterada nenhuma das definições geradas pelo assistente, pois as mesmas serão perdidas caso o código-fonte seja gerado novamente.

 

Procedimento

Para geração do código-fonte client, em AdvPL, para utilizar este serviço, é necessário criar um novo arquivo .PRX, no TOTVS | Development Studio, especificamente para conter as classes deste serviço. Para isso, acesso o menu Ferramentas + Gerar Cliente WebService.

Ao clicar nesta opção, será apresentada uma tela (tipo pop-up).

 

No campo URL do WebService, informe a URL de onde o servidor irá obter a definição do Web Service.

No nosso exemplo, http//localhost/SERVERTIME.apw?WSDL.

Após a confirmação, caso o procedimento ocorra com sucesso, na janela de mensagens do TOTVS | Development Studio, será apresentado um texto semelhante ao abaixo:

Estabelecendo conexão com o server...
Por favor aguarde.
Obtendo descrição do WebService...
Finalizando conexão com o server...
OK

 

E, na janela do novo arquivo criado, deverá ser criado um código-fonte semelhante ao apresentado abaixo:

 

#INCLUDE 'PROTHEUS.CH'
#INCLUDE 'APWEBSRV.CH'
--- header do serviço ---
/* ===============================================================================
WSDL Location http://localhost/SERVERTIME.apw?WSDL
Gerado em 12/30/02 17:21:29
Observações Código-fonte gerado por ADVPL WSDL Client 1.021217
Alterações neste arquivo podem causar funcionamento incorreto
e serão perdidas caso o código-fonte seja gerado novamente.
=============================================================================== */

/* -------------------------------------------------------------------------------
WSDL Service WSSERVERTIME
------------------------------------------------------------------------------- */
--- declaração da Classe "client" do WebService, com métodos e propriedades utilizadas ---
WSCLIENT WSSERVERTIME
WSMETHOD NEW
WSMETHOD GETSERVERTIME
WSDATA _URL AS String
WSDATA cGETSERVERTIMERESULT AS string
ENDWSCLIENT

--- declaração do método NEW, para a criação do Objeto / Serviço ---
WSMETHOD NEW WSCLIENT WSSERVERTIME
::_URL := NIL
::cGETSERVERTIMERESULT := ''
Return Self

/* -------------------------------------------------------------------------------
WSDL Method GETSERVERTIME of Service WSSERVERTIME
------------------------------------------------------------------------------- */
--- Definição do método, que recebe os parâmetros de chamada, executa o serviço e alimenta as propriedades de retorno do método, contendo os encapsulamentos necessários para tratamento de exceções ---
WSMETHOD GETSERVERTIME WSSEND NULLPARAM WSRECEIVE cGETSERVERTIMERESULT WSCLIENT WSSERVERTIME
Local cSoap := '', oXmlRet
BEGIN WSMETHODDEFAULT
::_URL := 'http://localhost/SERVERTIME.apw'
cSoap += '<GETSERVERTIME xmlns="http://localhost/">'
cSoap += '</GETSERVERTIME>'
oXmlRet := SvcSoapCall( Self,cSoap,;
'http://localhost/GETSERVERTIME',;
'DOCUMENT','http://localhost/',)
::cGETSERVERTIMERESULT := xGetInfo( oXmlRet, '_GETSERVERTIMERESPONSE:_GETSERVERTIMERESULT:TEXT', '' )
END WSMETHOD

oXmlRet := NIL
Return .T.

 

O código-fonte acima constitui uma classe em AdvPL, gerada para realizar a interface com a classe original publicada no Server, já realizando os tratamentos adequados para realizar a comunicação via HTTP com o servidor onde o serviço está publicado. Vale observar que, as linhas em negrito no código-ffonte acima, nâo foram inseridas pelo assistente do TOTVS | Development Studio, mas acrescentadas a este documento para fins didáticos.

O cabeçalho do código-fonte contém informações sobre a localização do WSDL utilizado para a geração do código-fonte, data e hora de geração e versão do engine de Web Services utilizado. Logo abaixo, a declaração de uma classe ?client? de Web Services (WSCLIENT WSSERVERTIME), com o método new() para inicialização das propriedades AdvPL da classe .  E, em seguida, a declaração do método de busca de Horário (WSMETHOD GETSERVERTIME), que não envia parâmetro algum, e retorna o horário atual do server em :: cGETSERVERTIMERESULT, com todos os tratamentos necessários embutidos.