configurar e consumir webservice › advpl brasil

6
12/9/2014 Configurar e Consumir WebService › Advpl Brasil http://advplbrasil.com.br/advpl/configurar-e-consumir-webservice/ 1/18 Blog ROGÉRIO 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 Rogério 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 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 Consultoria ADVPL [email protected] Rogério Lino HOME CONSULTORIA NOTÍCIAS SOBRE

Upload: leonardo-ferreira

Post on 26-Dec-2015

208 views

Category:

Documents


7 download

TRANSCRIPT

12/9/2014 Configurar e Consumir WebService › Advpl Brasil

http://advplbrasil.com.br/advpl/configurar-e-consumir-webservice/ 1/18

Blog

ROGÉRIO 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 WebServiceby Rogério Rafael Lino

WebServicePasso a Passo

O primeiro passo é configurar o webservice, uma maneira simples é utilizando o TotvsWizard que se localiza napasta smartclient dentro do diretório bin. O exemplo abaixo nos mostra como deve ser realizado o processo deconfiguraçã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 dodiretório bin.

Totvswizard

Inclua na aba Módulos Web uma instancia Ws.

Em seguida relacione a empresa com o host

Consultoria ADVPL [email protected]

Rogério Lino

HOME CONSULTORIA NOTÍCIAS SOBRE

12/9/2014 Configurar e Consumir WebService › Advpl Brasil

http://advplbrasil.com.br/advpl/configurar-e-consumir-webservice/ 2/18

TotvsWizardE no final aparecerá uma tela para confirmar o host virtual de acordo com as configurações passadasanteriormente.

TotvsWizardPronto 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ódigo1234567891011121314151617181920212223242526272829303132333435363738394041

[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 então 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:

WebServicePronto 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:

Compile e em seguida abra o browser e digite a url ( http://localhost:81/ws/WSINDEX.apw ) verifique se já estadisponível o webservice criado como mostra a figura abaixo:

4243

PREPAREIN=99,01

Código1234567891011121314151617181920212223242526272829303132333435363738394041424344454647

[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

Código1234567891011121314151617

#INCLUDE "APWEBSRV.CH" #INCLUDE "PROTHEUS.CH" WSSERVICE WSADVPLBRASIL DESCRIPTION "Serviço com a finalidade de mostrar um exemplo de webservice" WSDATA cString as String WSMETHOD RetornaUrl DESCRIPTION "Método 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 AdvplBrasilAgora 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 AdvplBrasilSegundo Outras Documentações:

O WSDL( Web Services Description Language ) : Trata-se de um documento, em formato de acordo com asdefinições de Web Services, através do qual um provedor de um serviço provê a discriminação detalhada dasfuncionalidades de um serviço. Este documento em geral é fornecido através de uma URL, apontando para oservidor 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’ emAdvpl.

Parabéns seu Webservice está criado e pronto para ser utilizado.Consumindo um WebserviceIniciamos 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 MenuFerramentas – 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 AdvplBrasilEm seguida verifique como ficou o código fonte.

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

Código12345678910

#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 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:

1112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899

100101102103104105106107

Observações Código-Fonte gerado por ADVPL WSDL Client 1.090116 Alterações neste arquivo podem causar funcionamento incorreto e serão perdidas caso o código-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 Código-Fonte Client atual requer os executáveis do Protheus Build [7.00.100601A-20100727] ou superior. Atualize o Protheus ou gere o Código-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.

Código1234567891011

#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 !!!

Parabéns …

Tags: advpl webservice Configurar e Consumir WebService configurar webservice advpl configurarwebservice protheus desenvolver webservice advpl desenvolver webservice protheus protheuswebservice webservice advpl webservice protheus

47 Comentários

Robson19 de abril de 2011 às 16:24

Parabéns Rogério, muito legal.\r

\rAproveitando gostaria de saber se você tem algum exemplo ou fonte de webservice que recebeum array de “n” elementos e processa cadastrando em uma determianda tabela.\r

\rObrigado e um abraço

RESPONDER

Rogério Rafael Lino19 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 Moreira15 de junho de 2011 às 14:14

Olá.\r

\rTemos um webservice de outra aplicativo que forneço os parametros na propria url e eleretorna 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)\rGostaria de saber se é possivel e/ou como faço para fornecer os parametros do webservice doprotheus pela url e receber a resposta no prórpio navegador.\r

\rDesde já agradeço a ajuda,\r

\rJefferson Moreira

RESPONDER

Rogério Rafael Lino15 de junho de 2011 às 15:04

Boa tarde, Jeferson e obrigado por participar do portal advplbrasil.

1213141516171819

Else alert('Erro de Execução : '+GetWSCError()) Endif Return