configurar e consumir webservice › advpl brasil

Post on 26-Dec-2015

208 Views

Category:

Documents

7 Downloads

Preview:

Click to see full reader

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 admin@advplbrasil.com.br

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

top related