Você está na página 1de 6

12/9/2014 Configurar e Consumir WebService Advpl Brasil

http://advplbrasil.com.br/advpl/configurar-e-consumir-webservice/ 1/18
Blog
ROGRIO RAFAEL LINO
ADVPL
ABRIL 19, 2011

SETEMBRO 2014
S T Q Q S S D
fev
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
PARCEIROS
3L Systems
C# Brasil
Dev Mobile Brasil
Projetos e TI
Configurar e Consumir WebService
by Rogrio Rafael Lino
WebService
Passo a Passo
O primeiro passo configurar o webservice, uma maneira simples utilizando o TotvsWizard que se localiza na
pasta smartclient dentro do diretrio bin. O exemplo abaixo nos mostra como deve ser realizado o processo de
configurao 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
diretrio bin.
Totvswizard
Inclua na aba Mdulos Web uma instancia Ws.
Em seguida relacione a empresa com o host
Consultoria ADVPL
admin@advplbrasil.com.br
Rogrio Lino
HOME CONSULTORIA NOTCIAS SOBRE
12/9/2014 Configurar e Consumir WebService Advpl Brasil
http://advplbrasil.com.br/advpl/configurar-e-consumir-webservice/ 2/18
TotvsWizard
E no final aparecer uma tela para confirmar o host virtual de acordo com as configuraes passadas
anteriormente.
TotvsWizard
Pronto j possui uma configurao de webservice no seu totvsappserver.ini.
Agora provavelmente seu totvsappserver.ini esta conforme descrito abaixo:
(Lembrando que refere apenas a parte sobre webservice).
Cdigo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
[HTTP]

enable=1

path=C:\Protheus10\ajuda\Protheus10help\

port=81

[ONSTART]

JOBS=JOB_WS_9901

[Localhost:81]

ENABLE=1

PATH=C:\Protheus10\Protheus_Data\web\ws\

ENVIRONMENT=PROTHEUS

INSTANCENAME=Ws

RESPONSEJOB=JOB_WS_9901

DEFAULTPAGE=wsindex.apw

[JOB_WS_9901]

TYPE=WEBEX

ENVIRONMENT=PROTHEUS

INSTANCES=1,20

SIGAWEB=WS

INSTANCENAME=Ws

ONSTART=__WSSTART

ONCONNECT=__WSCONNECT
12/9/2014 Configurar e Consumir WebService Advpl Brasil
http://advplbrasil.com.br/advpl/configurar-e-consumir-webservice/ 3/18
Se mantiver da forma descrita acima seu help vai para de funcionar ento configure assim:
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 criao de um cdigo fonte voltado ao desenvolvimento de um webservice.
Primeiramente abra o IDE do Protheus que se encontra na pasta SmartClient e cole o seguinte fonte:
Compile e em seguida abra o browser e digite a url ( http://localhost:81/ws/WSINDEX.apw ) verifique se j esta
disponvel o webservice criado como mostra a figura abaixo:
42
43

PREPAREIN=99,01
Cdigo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
[HTTP]

enable=1

port=81

[Localhost:81/help]

ENABLE=1

path=C:\Protheus10\ajuda\Protheus10help\

DEFAULTPAGE=menuprotheus10.htm

[ONSTART]

JOBS=JOB_WS_9901

[Localhost:81/ws]

ENABLE=1PATH=C:\Protheus10\Protheus_Data\web\ws

ENVIRONMENT=PROTHEUS

INSTANCENAME=Ws

RESPONSEJOB=JOB_WS_9901

DEFAULTPAGE=wsindex.apw

[JOB_WS_9901]

TYPE=WEBEX

ENVIRONMENT=PROTHEUS

INSTANCES=1,20

SIGAWEB=WS

INSTANCENAME=Ws

ONSTART=__WSSTART

ONCONNECT=__WSCONNECT

PREPAREIN=99,01
Cdigo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#INCLUDE "APWEBSRV.CH"

#INCLUDE "PROTHEUS.CH"

WSSERVICE WSADVPLBRASIL DESCRIPTION "Servio com a finalidade de mostrar um exemplo de webservice"

WSDATA cString as String

WSMETHOD RetornaUrl DESCRIPTION "Mtodo que retorna a url do site"

ENDWSSERVICE

WSMETHOD RetornaUrl WSRECEIVE NULLPARAM WSSEND cString WSSERVICE WSADVPLBRASIL

::cString := "http://advplbrasil.com.br/"

Return .T.
12/9/2014 Configurar e Consumir WebService Advpl Brasil
http://advplbrasil.com.br/advpl/configurar-e-consumir-webservice/ 4/18
WebService AdvplBrasil
Agora uma das partes mais importante de um clique em cima do webservice WSADVPLBRASIL e aparecer
uma tela descrevendo os mtodos e informando o WSDL a ser utilizado.
Wsdl AdvplBrasil
Segundo Outras Documentaes:
O WSDL( Web Services Description Language ) : Trata-se de um documento, em formato de acordo com as
definies de Web Services, atravs do qual um provedor de um servio prov a discriminao detalhada das
funcionalidades de um servio. Este documento em geral fornecido atravs de uma URL, apontando para o
servidor que prov o servio. Utilizando este documento, o Protheus capaz de gerar automaticamente um
Fonte Client para estabelecer a conexo e utilizao do servio, atravs da gerao de uma classe Client em
Advpl.
Parabns 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 no esquea de colocar a url com o localhost pois seno ocorrer erro:
http://localhost:81/ws/WSADVPLBRASIL.apw?WSDL

Url AdvplBrasil
Em seguida verifique como ficou o cdigo fonte.
O cdigo fonte tem que ficar com as seguintes caractersticas:
Cdigo
1
2
3
4
5
6
7
8
9
10
#INCLUDE "PROTHEUS.CH"

#INCLUDE "APWEBSRV.CH"

/* ===============================================================================

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

Gerado em 04/19/11 09:53:12

12/9/2014 Configurar e Consumir WebService Advpl Brasil
http://advplbrasil.com.br/advpl/configurar-e-consumir-webservice/ 5/18
Agora salve o arquivo com o cdigo acima, adicione no gerenciador de projetos no IDE Protheus e compile.
Por fim chegamos a ultima etapa a criao do cdigo fonte para consumir o webservice criado.
Ainda no IDE Protheus abra um novo e utilize o cdigo abaixo:
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
Observaes Cdigo-Fonte gerado por ADVPL WSDL Client 1.090116

Alteraes neste arquivo podem causar funcionamento incorreto

e sero perdidas caso o cdigo-fonte seja gerado novamente.

=============================================================================== */

User Function _MGVQMBQ ; Return // "dummy" function - Internal Use

/* -------------------------------------------------------------------------------

WSDL Service WSWSADVPLBRASIL

------------------------------------------------------------------------------- */

WSCLIENT WSWSADVPLBRASIL

WSMETHOD NEW

WSMETHOD INIT

WSMETHOD RESET

WSMETHOD CLONE

WSMETHOD RETORNAURL

WSDATA _URL AS String

WSDATA cRETORNAURLRESULT AS string

ENDWSCLIENT

WSMETHOD NEW WSCLIENT WSWSADVPLBRASIL

::Init()

If !FindFunction("XMLCHILDEX")

UserException("O Cdigo-Fonte Client atual requer os executveis do Protheus Build [7.00.100601A-20100727] ou superior. Atualize o Protheus ou gere o Cdigo-Fonte novamente utilizando o Build atual."

EndIf

Return Self

WSMETHOD INIT WSCLIENT WSWSADVPLBRASIL

Return

WSMETHOD RESET WSCLIENT WSWSADVPLBRASIL

::cRETORNAURLRESULT := NIL

::Init()

Return

WSMETHOD CLONE WSCLIENT WSWSADVPLBRASIL

Local oClone := WSWSADVPLBRASIL():New()

oClone:_URL := ::_URL

oClone:cRETORNAURLRESULT := ::cRETORNAURLRESULT

Return oClone

// WSDL Method RETORNAURL of Service WSWSADVPLBRASIL

WSMETHOD RETORNAURL WSSEND NULLPARAM WSRECEIVE cRETORNAURLRESULT WSCLIENT WSWSADVPLBRASIL

Local cSoap := "" , oXmlRet

BEGIN WSMETHOD

cSoap += '<RETORNAURL xmlns="http://localhost:81/">'

cSoap += "</RETORNAURL>"

oXmlRet := SvcSoapCall( Self,cSoap,;

"http://localhost:81/RETORNAURL",;

"DOCUMENT","http://localhost:81/",,"1.031217",;

"http://localhost:81/ws/WSADVPLBRASIL.apw")

::Init()

::cRETORNAURLRESULT := WSAdvValue( oXmlRet,"_RETORNAURLRESPONSE:_RETORNAURLRESULT:TEXT"

END WSMETHOD

oXmlRet := NIL

Return .T.
Cdigo
1
2
3
4
5
6
7
8
9
10
11
#INCLUDE 'PROTHEUS.CH'

User Function TesteWs()

Local oWs := NIL

oWs := WSWSADVPLBRASIL():New()

If oWs:RETORNAURL()

alert('Url do Site : '+ oWs:cRETORNAURLRESULT)
12/9/2014 Configurar e Consumir WebService Advpl Brasil
http://advplbrasil.com.br/advpl/configurar-e-consumir-webservice/ 6/18
Compile e execute dentro do Protheus o resultado ser:
Se chegar at aqui j pode se considerar um vencedor !!!
Parabns
Tags: advpl webservice Configurar e Consumir WebService configurar webservice advpl configurar
webservice protheus desenvolver webservice advpl desenvolver webservice protheus protheus
webservice webservice advpl webservice protheus
47 Comentrios
Robson
19 de abril de 2011 s 16:24
Parabns Rogrio, muito legal.
\r
\r
Aproveitando gostaria de saber se voc tem algum exemplo ou fonte de webservice que recebe
um array de n elementos e processa cadastrando em uma determianda tabela.
\r
\r
Obrigado e um abrao
RESPONDER
Rogrio Rafael Lino
19 de abril de 2011 s 16:48
Boa tarde Robson
Amanh disponibilizo um exemplo com array pra voc.
E seja bem vindo ao Advpl Brasil
RESPONDER
Jefferson Moreira
15 de junho de 2011 s 14:14
Ol.
\r
\r
Temos um webservice de outra aplicativo que forneo os parametros na propria url e ele
retorna o resultado em xml no proprio navegador.
(http://192.100.1.206:8972/csp/manaus/Vendas.ControleDeFretes.Fretes.cls?
soap_method=Calcula&CAT=REVENDA&TRA=20&UF=PR&MUNICIPIO=CASCAVEL&VALOR=205&PESO=11)
\r
Gostaria de saber se possivel e/ou como fao para fornecer os parametros do webservice do
protheus pela url e receber a resposta no prrpio navegador.
\r
\r
Desde j agradeo a ajuda,
\r
\r
Jefferson Moreira
RESPONDER
Rogrio Rafael Lino
15 de junho de 2011 s 15:04
Boa tarde, Jeferson e obrigado por participar do portal advplbrasil.
12
13
14
15
16
17
18
19

Else

alert('Erro de Execuo : '+GetWSCError())

Endif

Return