Você está na página 1de 10

Configurar e Consumir WebService com ADVPL

WebService
Passo a Passo

O primeiro passo é configurar o webservice, uma maneira simples é utilizando o TotvsWizard que se localiza na pasta
smartclient dentro do diretório bin. O exemplo abaixo nos mostra como deve ser realizado o processo de configuração no
TotvsWizard.

Outra forma de configurar o webservice seria de forma manual, segundo estudiosos é menos recomendado, mas se ainda
sim preferir pode ser configurado direto no totvsappserver.ini dentro da pasta appserver do diretório bin.

Totvswizard

Inclua na aba Módulos Web uma instancia Ws.

Em seguida relacione a empresa com o host


TotvsWizard
E no final aparecerá uma tela para confirmar o host virtual de acordo com as configurações passadas anteriormente.

TotvsWizard
Pronto já possui uma configuração de webservice no seu totvsappserver.ini.

Agora provavelmente seu totvsappserver.ini esta conforme descrito abaixo:

(Lembrando que refere apenas a parte sobre webservice).


Código

1 [HTTP]
2
3 enable=1
4
5 path=C:\Protheus10\ajuda\Protheus10help\
6
7 port=81
8
9 [ONSTART]
10
11 JOBS=JOB_WS_9901
12
13 [Localhost:81]
14
15 ENABLE=1
16
17 PATH=C:\Protheus10\Protheus_Data\web\ws\
18
19 ENVIRONMENT=PROTHEUS
20
21 INSTANCENAME=Ws
22
23 RESPONSEJOB=JOB_WS_9901
24
25 DEFAULTPAGE=wsindex.apw
26
27 [JOB_WS_9901]
28
29 TYPE=WEBEX
30
31 ENVIRONMENT=PROTHEUS
32
33 INSTANCES=1,20
34
35 SIGAWEB=WS
36
37 INSTANCENAME=Ws
38
39 ONSTART=__WSSTART
40
41 ONCONNECT=__WSCONNECT
42
43 PREPAREIN=99,01

Se mantiver da forma descrita acima seu help vai para de funcionar então configure assim:

Código
1 [HTTP]
2
3 enable=1
4
5 port=81
6
7 [Localhost:81/help]
8
9 ENABLE=1
10
11 path=C:\Protheus10\ajuda\Protheus10help\
12
13 DEFAULTPAGE=menuprotheus10.htm
14
15 [ONSTART]
16
17 JOBS=JOB_WS_9901
18
19 [Localhost:81/ws]
20
21 ENABLE=1PATH=C:\Protheus10\Protheus_Data\web\ws
22
23 ENVIRONMENT=PROTHEUS
24
25 INSTANCENAME=Ws
26
27 RESPONSEJOB=JOB_WS_9901
28
29 DEFAULTPAGE=wsindex.apw
30
31 [JOB_WS_9901]
32
33 TYPE=WEBEX
34
35 ENVIRONMENT=PROTHEUS
36
37 INSTANCES=1,20
38
39 SIGAWEB=WS
40
41 INSTANCENAME=Ws
42
43 ONSTART=__WSSTART
44
45 ONCONNECT=__WSCONNECT
46
47 PREPAREIN=99,01

Pronto seu totvsappserver.ini está configurado corretamente.


Agora vamos verificar se o webservice foi habilitado.

Digite no browser a url ( http://localhost:81/ws/WSINDEX.apw ) e aparecerá a seguinte imagem:

WebService
Pronto seu Webservice está habilitado.

Vamos agora iniciar a criação de um código fonte voltado ao desenvolvimento de um webservice.

Primeiramente abra o IDE do Protheus que se encontra na pasta SmartClient e cole o seguinte fonte:

Código

1
2
3
4
#INCLUDE "APWEBSRV.CH"
5
6
#INCLUDE "PROTHEUS.CH"
7
8
WSSERVICE WSADVPLBRASIL DESCRIPTION "Serviço com a finalidade de mostrar um
9
exemplo de webservice"
1
0
WSDATA cString as String
1
1
WSMETHOD RetornaUrl DESCRIPTION "Método que retorna a url do site"
1
2
ENDWSSERVICE
1
3
WSMETHOD RetornaUrl WSRECEIVE NULLPARAM WSSEND cString WSSERVICE WSADVPLBRASIL
1
4
::cString := "http://advplbrasil.com.br/"
1
5
Return .T.
1
6
1
7

Compile e em seguida abra o browser e digite a url ( http://localhost:81/ws/WSINDEX.apw ) verifique se já esta disponível o
webservice criado como mostra a figura abaixo:
WebService AdvplBrasil
Agora uma das partes mais importante de um clique em cima do webservice WSADVPLBRASIL e aparecerá uma tela
descrevendo os métodos e informando o WSDL a ser utilizado.

Wsdl AdvplBrasil
Segundo Outras Documentações:

O WSDL( Web Services Description Language ) : Trata-se de um documento, em formato de acordo com as definições de
Web Services, através do qual um provedor de um serviço provê a discriminação detalhada das funcionalidades de um
serviço. Este documento em geral é fornecido através de uma URL, apontando para o servidor que provê o serviço.
Utilizando este documento, o Protheus é capaz de gerar automaticamente um ‘Fonte Client’ para estabelecer a conexão e
utilização do serviço, através da geração de uma classe ‘Client’ em Advpl.

Parabéns seu Webservice está criado e pronto para ser utilizado.


Consumindo um Webservice
Iniciamos agora a segunda etapa gerar um client do webservice que criamos.

Para isso basta pegar o wsdl que vimos acima e colocar no IDE Protheus especificamente em Menu Ferramentas – Gerar
Cliente Webservices…
A proposito não esqueça de colocar a url com o localhost pois senão ocorrerá erro:

http://localhost:81/ws/WSADVPLBRASIL.apw?WSDL

Url AdvplBrasil
Em seguida verifique como ficou o código fonte.

O código fonte tem que ficar com as seguintes características:

Código

1 #INCLUDE "PROTHEUS.CH"
2
3 #INCLUDE "APWEBSRV.CH"
4
5 /*
6 ===============================================================================
7
8 WSDL Location http://localhost:81/ws/WSADVPLBRASIL.apw?WSDL
9
10 Gerado em 04/19/11 09:53:12
11
12 Observações Código-Fonte gerado por ADVPL WSDL Client 1.090116
13
14 Alterações neste arquivo podem causar funcionamento incorreto
15
16 e serão perdidas caso o código-fonte seja gerado novamente.
17
18 ===============================================================================
19 */
20
21 User Function _MGVQMBQ ; Return // "dummy" function - Internal Use
22
23 /*
24 -------------------------------------------------------------------------------
25
26 WSDL Service WSWSADVPLBRASIL
27
28 -------------------------------------------------------------------------------
29 */
30
31 WSCLIENT WSWSADVPLBRASIL
32
33 WSMETHOD NEW
34
35 WSMETHOD INIT
36
37 WSMETHOD RESET
38
39 WSMETHOD CLONE
40
41 WSMETHOD RETORNAURL
42
43 WSDATA _URL AS String
44
45 WSDATA cRETORNAURLRESULT AS string
46
47 ENDWSCLIENT
48
49 WSMETHOD NEW WSCLIENT WSWSADVPLBRASIL
50
51 ::Init()
52
53 If !FindFunction("XMLCHILDEX")
54
55 UserException("O Código-Fonte Client atual requer os executáveis do Protheus
56 Build [7.00.100601A-20100727] ou superior. Atualize o Protheus ou gere o Código-
57 Fonte novamente utilizando o Build atual.")
58
59 EndIf
60
61 Return Self
62
63 WSMETHOD INIT WSCLIENT WSWSADVPLBRASIL
64
65 Return
66
67 WSMETHOD RESET WSCLIENT WSWSADVPLBRASIL
68
69 ::cRETORNAURLRESULT := NIL
70
71 ::Init()
72
73 Return
74
75 WSMETHOD CLONE WSCLIENT WSWSADVPLBRASIL
76
Local oClone := WSWSADVPLBRASIL():New()
77
78
oClone:_URL := ::_URL
79
80
oClone:cRETORNAURLRESULT := ::cRETORNAURLRESULT
81
82
Return oClone
83
84
// WSDL Method RETORNAURL of Service WSWSADVPLBRASIL
85
86
WSMETHOD RETORNAURL WSSEND NULLPARAM WSRECEIVE cRETORNAURLRESULT WSCLIENT
87
WSWSADVPLBRASIL
88
89
Local cSoap := "" , oXmlRet
90
91
BEGIN WSMETHOD
92
93
cSoap += '<RETORNAURL xmlns="http://localhost:81/">'
94
95
cSoap += "</RETORNAURL>"
96
97
oXmlRet := SvcSoapCall( Self,cSoap,;
98
99
"http://localhost:81/RETORNAURL",;
10
0
"DOCUMENT","http://localhost:81/",,"1.031217",;
10
1
"http://localhost:81/ws/WSADVPLBRASIL.apw")
10
2
::Init()
10
3
::cRETORNAURLRESULT :=
10
WSAdvValue( oXmlRet,"_RETORNAURLRESPONSE:_RETORNAURLRESULT:TEXT","string",NIL,NI
4
L,NIL,NIL,NIL,NIL)
10
5
END WSMETHOD
10
6
oXmlRet := NIL
10
7
Return .T.

Agora salve o arquivo com o código acima, adicione no gerenciador de projetos no IDE Protheus e compile.

Por fim chegamos a ultima etapa a criação do código fonte para consumir o webservice criado.

Ainda no IDE Protheus abra um novo e utilize o código abaixo:

Código
1 #INCLUDE 'PROTHEUS.CH'
2
3 User Function TesteWs()
4
5 Local oWs := NIL
6
7 oWs := WSWSADVPLBRASIL():New()
8
9 If oWs:RETORNAURL()
10
11 alert('Url do Site : '+ oWs:cRETORNAURLRESULT)
12
13 Else
14
15 alert('Erro de Execução : '+GetWSCError())
16
17 Endif
18
19 Return

Compile e execute dentro do Protheus o resultado será:

Se chegar até aqui já pode se considerar um vencedor !!!

Parabéns …