Você está na página 1de 58

Curso de Introduo a Plataforma ADVPL/ASP e Webservice

Aprenda de uma forma simples , objetiva e direta os principais conceitos do ADVPL/ASP e WebService. O curso apresenta o ADVPL/ASP, a linguagem utilizado produzida para o desenvolvimento de aplicaes baseadas na Web. Alm de apresentar os principais conceitos Webservice incluindo exemplos de Montagem de um liente em !rot"eus.

Curso de Introduo a Plataforma ADVPL/ASP WebService

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

ndice Analtico
Captulo 1 Arquitetura da ADVPL ASP ! #ntrodu$o ........................................................................................................% &eposit'rio de Objetos......................................................................................% A!O (Advanced !rot"eus Object)................................................................*..% &epresenta$o gr+fica do processamento........................................................, -erramentas de !rodu$o.................................................................................. Captulo " Vari#veis $ #ntrodu$o ........................................................................................................./ 0omenclatura das 1ari+veis ............................................................................./ 2eclarando 1ari+veis ......................................................................................../ Operadores .......................................................................................................3 Captulo % &strutura da ADVPL ASP '( #ntrodu$o *****.****.......................................................................45 6xemplo ...........................................................................................................45 Captulo ! &struturas de Controle 11 #nstru$o if .. t"en .. else ..elseif .....****************.......77 #nstru$o 2o case ...........................................................................................7, 8oops............................*********.***********.*......7, Captulo ) *ecuperando Dados enviados por Post e +et 1, &ecuperando 2ados com Met'do !O9: ................................*****......7. &ecuperando 2ados com Met'do ;6: ..........................................................73 Captulo , Acessando -ase de Dados "" #ntrodu$o ......................................................................................................<< #nserindo dados em uma tabela......................................................................<% Captulo $ Web Services e. ADVPL / CL0&12 "3 #ntrodu$o ......................................................................................................<3
Curso de Introduo a Plataforma ADVPL/ASP WebService
"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

:ermos :cnicos ...........................................................................................<3 2efini$o do 9ervio em Advpl = lient .........................................................<5 !assos para a utiliza$o do -onte = lient ....................................................<5 !asso 7 > 2eterminar como obter o W928 do servio desejado...................?4 !asso < > ;erar o -onte Adv!l do lient usando o Assistente do #26 .........?7 !asso ? > riar um fonte para a obten$o do "or+rio ...................................?% !asso % > 6xecutar o programa de testes......................................................?, !asso , > Obter informaes de @debugA........................................................?. Web 9ervices lient B odigos de 6rro.........................................................?3 Captulo 3 Web Services e. ADVPL / S&*V&* !3 #ntrodu$o .....................................................................................................%3 :ermos :cnicos ..........................................................................................%3 2efini$o do 9ervio em Advpl = 9erver .......................................................%5 2eclara$o de um Web 9ervice B 96&16& em Advpl.................................,4 &egras para 0omenclatura dos 9ervios C 6struturas C 2ados e Mtodos...,7 0omenclatura dos 9ervios...........................................................................,7 0omenclatura de 6struturas..........................................................................,7 0omenclatura de 2ados ( ampos ) ............................................................,7 :ipos de 2ados D+sicos................................................................................,< Mtodos ( Aes ) ........................................................................................,? !ublicando um W6D 9ervice no !rot"eus = onfigura$o...........................,? Web 9ervices B !onto de 6ntrada W99:A&:.............................................,,

Curso de Introduo a Plataforma ADVPL/ASP WebService

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

Captulo 1 / Arquitetura da ADVPL ASP


0ntrodu45o Ema p+gina A9! (Active 9erver !ages) uma p+gina F:M8 contendo c'digo interpret+veis em uma linguagem compreensGvel ao servidor F::! em uso. !or exemplo, o ##9 (#nternet #nformation 9erver) da Microsoft recepciona scripts em 1D9cript ou o Hava9cript para criar suas p+ginas A9!, do mesmo modo Iue o A!/ Web 9erver recepciona a A21!8 A9!. Ema p+gina A9! uma combina$o de script F:M8 e c'digo interpret+vel. 0o A21!8 A9! esse c'digo padr$o xDase, portanto a preocupa$o maior daIueles Iue j+ con"ecem e trabal"am com o A!/ e desejam desenvolver p+ginas ativas para aplicaes Web utilizando essa facilidade con"ecer F:M8. Ema caracterGstica fundamental da A21!8 A9! Iue o script executado no servidor, protegendo totalmente a propriedade intelectual e tambm eliminando o trabal"o do programador de se preocupar com Iual broJser o usu+rio estaria utilizando para visualizar as p+ginas, devido a incompatibilidade. Outra caracteristica o processamento do lado do servidor. *eposit6rio de 7b8etos O reposit'rio do A!/ um conjunto de Objetos A21!8 A9! (A!Os) compilado de acordo com a 6nvironment definida no A!/ #26 Iue podem ser utilizados a IualIuer momento de uma aplica$o. &eposit'rio

AP7s
.ap"

AP7 9Advanced Prot:eus 7b8ect;

Curso de Introduo a Plataforma ADVPL/ASP WebService

"

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

O A!O con"ecido como um Objeto ou um programa A21!8. Em conjunto de A!Os formam um reposit'rio Iue est$o armazenados dentro do A!/ Web 9erver conforme descrito anteriormente. Kuando uma E&8 reIuisitada atravs de um DroJser (seja atravs de um -ormul+rio F:M8, um linL ou diretamente atravs do campo de E&8 do DroJser), essa reIuisi$o recebida pelo A!/ 9erver Iue a tratar+ do seguinte modo>

*epresenta45o <r#=ica do processa.ento Cliente


9olicita$o func.A!W

Resposta HTML

APOs (repositrio)

AP7
Web Server

A seguir dispomos os v+rios comportamento ou resposta do A!/ 9erver para cada tipo de solicita$o.
&>tens5o do arquivo
0en"uma

Descri45o
Em endereo "ttp Mnico, sem um nome de arIuivo definido. !+ginas F:M8, arIuivos texto, arIuivos de imagem, som, vGdeo, etc. O uma c"amada direta a uma fun$o do reposit'rio do A!/.

7 que acontece
Ao c"amar um endereo E&8 sem informar arIuivo nen"um, o A!/ 9erver ir+ procurar o arIuivo c"amado 26-AE8:.F:M para enviar ao Web DroJser Iue efetuou o reIuest. A p+gina F:M8, ou IualIuer Iue seja o arIuivo, ser+ simplesmente enviado ao Web DroJser, sendo Iue este o respons+vel pela sua tradu$oCinterpreta$o. Kuando o A!/ 9erver receber um reIuest deste tipo, a fun$o c"amada (no exemplo func.apJ, a fun$o c"amada func, sem a extens$o) ser+ executada no A!/ 9erver configurado na c"ave PnomeQdoQserverR. O Iue dever+ ser retornado pela fun$o uma string, Iue ser+ enviada para o Web DroJser.

&>e.plo
"ttp>CCservidorC

.F:MN.F:M8 ou outra extens$o IualIuer. .A!W

"ttp>CCservidorCcadastro."t m ou "ttp>CCservidorCimagem.gif "ttp>CCservidorCacerto.apJ ou "ttp>CCservidorCrunprog.ap J

Curso de Introduo a Plataforma ADVPL/ASP WebService

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

.A!F

O uma c"amada para uma p+gina ativa (uma p+gina em A21!8 A9!).

Ema p+gina Advpl A9! uma p+gina F:M8 mesclada com c'digo execut+vel ou interpret+vel no server. :ais p+ginas s$o criadas utilizando IualIuer editor de texto ou editor F:M8, e devem ter 96M!&6 a extens$o .A!F. 2evem ser compiladas atravs do A!/ #26. 2urante a compila$o, o A!/ 9erver transforma essa p+gina em uma fun$o interna Iue ser+ executada da mesma maneira Iue aIuelas c"amadas .apJ explicadas anteriormente. omo s$o funes tambm, as p+ginas em Advpl A9! devem ser c"amadas do Web DroJser com a extens$o .apJ

"ttp>CCservidorCactivep.ap J ou "ttp>CCservidorCcadastro.a pJ

?erra.entas de Produ45o !ara aculturar=se em A21!8 A9! fundamental ter con"ecimento em F:M8, pois uma p+gina sempre "aver+ c'digo A21!8 A9! mesclado com F:M8. Os arIuivos Iue contm o c'digo para gerar as p+ginas de seu site s$o arIuivos texto, portanto, vocS pode utilizar IualIuer editor de texto do mercado. Etilizaremos o A!/ #26 para escrever nossos c'digos A21!8 A9! com F:M8, porem utilizaremos tambm uma ferramenta Iue nos auxilie no F:M8. 6xistem v+rias no mercado, mas as mais familiares s$o 2reamJeaver da Macromedia, -ront!age e o 1isual 9tudio da Microsoft entre outros .

Captulo " / Vari#veis


Curso de Introduo a Plataforma ADVPL/ASP WebService $

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

0ntrodu45o 1ari+veis um espao tempor+rio na mem'ria &AM Iue pode ser manipulado. 1o.enclatura das vari#veis 0o FTpersite seguimos uma padroniza$o de nomenclaturas para facilitar o entendimento dos complexos scripts. nUUUU V vari+vel 0umeric (nMmerico). Kuando vocS se deparar com uma vari+vel Iue possui o prefixo n significa Iue o conteMdo dela um valor nMmerico. 6x.> n18E0 V 744 dUUUU V vari+vel 2ate (data). Kuando vocS se deparar com uma vari+vel Iue possui o prefixo d significa Iue o conteMdo dela uma data. 6x.> d2:!; V 7%C43C<444 cUUUU V vari+vel "ar ou 9tring (texto). Kuando vocS se deparar com uma vari+vel Iue possui o prefixo c significa Iue o conteMdo dela um texto. 6x.> c2:!; V MaLira lUUUU V vari+vel logic (l'gico). Kuando vocS se deparar com uma vari+vel Iue possui o prefixo l significa Iue o conteMdo dela um valor l'gico (verdadeiro ou falso). 6x.> lA:#1O V Declarando vari#veis A declara$o das vari+veis obrigat'rio na A21!8 A9!. F+ dois tipos de vari+veis a 8ocal e a !rivate. Etiliza=se uma vari+vel !ublic Iuando "+ necessidade de armazenar o conteMdo dela durante toda a navega$o do usu+rio dentro do site, ao contr+rio da 8ocal Iue utilizada momentaneamente. 7peradores

Curso de Introduo a Plataforma ADVPL/ASP WebService

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

7perador V VV >V WV ou XY

Descri45o ompara$o (igual) ompara$o (exatamente igual) Atribui$o 2iferente

Captulo % &strutura da ADVPL ASP


Curso de Introduo a Plataforma ADVPL/ASP WebService &

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

0ntrodu45o :odas as p+ginas escritas dever$o ser referenciadas a um programa A!8 seguindo sempre a mesma nomenclatura. A seguir temos a estrutura de um arIuivo A!W. &>e.plo Montaremos a seguir um programa fonte simples Iue retorna a 2ata do sistema. 6le ter+ o nome de &et2ate, a c"amada no broJser deve ser "ttp>CCnomeQdoQserverCuQ&et2ate.apJ. Abaixo damos a descri$o de cada parte da c"ama. 6ndereo do 9erver> http://nome_do server. Informa o endere o do server onde esta compi!ada a p"#ina. Por defau!t o server esta na porta $% portanto n&o ' necess"rio informar a porta, caso contrario a porta deveria ser informa com : (dois pontos) e o n*mero da porta ap+s o nome do serve. ,-.: http://nomedoQserver>3<CuQ&et2ate.apJ !rograma> ._/etDate.ap0 0omenclatura do nome :U_nnnnnnn.apw U_ : #nforma Iue Iue uma Eser -unction (-un$o de Esu+rio). WQ (Web -unction) e (-unction) s$o exclusiva para o desenvolvimento interno da Microsiga 9oftJare 9ZA. !ortanto clientes n$o conseguiram compilar Web -unction e -unction, somente Eser -unction. nnnnnnn: nome da -un$o .apw: extens$o de uma p+gina A21!8 A9!

[#0 8E26 \!&O:F6E9. F\ //Inc!ude obri#at+rio


Curso de Introduo a Plataforma ADVPL/ASP WebService '

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

[#0 8E26 \A!W6D9&1. F\ //Inc!ude obri#at+rio [#0 8E26 \W6D6U26-9. F\ //Inc!ude obri#at+rio //comentarios sobre autor, data, descri &o, retorno, etc. 1pciona! C] ====================================================================================== -uncao &et2ate Autor Antonio 2ata 4/C45C<44? 2escricao &etorna a 2ata &etorno &etorno da 2ata do 9istema ====================================================================================== ]C Eser -unction &et2ate() // 2!ientes da 3icrosi#a Soft0are S4A devem sempre desenvo!ver .ser 5unction. .ti!6a7se 5unction, Web 5unction para desenvo!vimento interno da 3icrosi#a Soft0are S4A. 8ocal cFtml //dec!ara &o da vari"ve! de retorno P 6spaco para declaracao de 1ariaveis e c"amada de MetodosR // Inicia!i6acao do Ambiente 88obri#atorio Web 6xtended #nit cFtml start \JQlogQclire\ //1pciona! cFtml >V 2ate() //atribui a data do Sistema. 9orma!mente pa!avras em outra cor :ue aparecem no ID, s&o pa!avras reservadas ou fun ;es do internas do sistema. P 6spaco reservado para o processamento, cria$o de cursores , etc,,, R

// 5echamento de ambiente 88 obri#atorio Web 6U:60262 6nd &eturn cFtml // ,sse ser" o retorno da 5un &o /etDate

Captulo ! &struturas de Controle


Curso de Introduo a Plataforma ADVPL/ASP WebService 1(

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

0nstru45o i=

t:en

else elsei=

A A21!8 A9! suporta as seguintes estruturas de decis$o> 0? Xcondi$oY X#nstru$oY &lsei= X#nstru$oY &lse X#nstru$oY &ndi= ,-erc<cio: Vamos e-emp!ificar a condi &o I5. 1 pro#rama a se#uir vai verificar se no momento da e-ecu &o a hora for menor :ue => hs ent&o enviar" a mensa#em ?@om dia AB caso contr"rio a mensa#em ser" ?@oa tarde AB. 7. 1amos criar um novo !rojeto no A!/ #26. a. 9elecione a op$o do menu @!rojetosA e em seguida @0ovosA <. 2igite o seguinte script e logo a seguir leia a explica$o passo a passo> Obs.> 6m todos os scripts contidos nesta documenta$o ser+ utilizado a numera$o de lin"as para fazer referSncia ^s lin"as do c'digo facilitando a explica$o, portanto, ao inseri=lo n$o considere os nMmeros. ?. 6ste c'digo abaixo ser+ o nosso arIuivo .apJ, portanto ao salv+=lo informe a sua extens$o.
7 Eser -unction ex447() < ? 8ocal cF:M8>V\\ % , Web 6xtended #nit cFtml . / cF:M8>V lQex447() CC ou "Qex447() 5 Web 6U:60262 6nd 74 77 &eturn cF:M8

0a lin"a 7 temos a declara_o de uma Eser function , montada para ser c"amada atraves do DroJser. 0a sua declaracao, ela gan"a um prefixo (EQ) 2aremos o nome para nossa fun$o de ex447.
Curso de Introduo a Plataforma ADVPL/ASP WebService 11

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

0a lin"a ? definimos a vari+vel cF:M8 como local e sem conteMdo inicial @A (em branco) 0a lin"a , c"amamos o comando Web 6xtended #nit, Iue inicializa o procedimento de montagem do ambiente necessario ^ abertura de tabelas e utiliza$o das demais funcoes, entre outras funcionalidades posteriormente explanadas. 6sta fun$o obrigat'ria. 0a lin"a / atribuGmos ^ vari+vel cF:M8 o retorno da fun$o lQex447 (para ex447.ap") ou "Qex447 (para ex447.a"u), retornando o F:M8 . O Iue diferSncia a necessidade de uma ou outra 9intax o ambiente de compila$o> para arIuivos compilados localmente nos cliente eles devem ser obrigat'riamente .AFE para os compilados na Microsiga ambos s$o aceitos. 0a lin"a 5 c"amamos o comando W6D 6U:60262 602, Iue informa ao servidor para fec"ar o ambiente . 6sta fun$o obrigat'ria. 6ntre outras funcionalidades internas, a W6D 6U:60262 602 coloca no Ftml identificadores internos, tratamentos de erro, entre outros, indispens+vel para o funcionamento do mecanismo como um todo. 0ao deve "aver mais nen"um processamento apos W6D 602 0a lin"a 77 obtemos o retorno da vari+vel cF:M8, Iue devolvido para o DroJser. %. Agora, nos vamos escrever o c'digo do arIuivo A!F (ou AFE) , portanto, salve este novo arIuivo como ex447.ap" (ou ex447.a"u). 0este momento estaremos solicitando ao servidor a "ora atual se a "ora atual for menor Iue 7< ent$o enviaremos a seguinte mensagem ao usu+rio @Dom dia WWWA se a "ora for maior Iue 7< ent$o ser+ enviado a seguinte mensagem ao usu+rio @Doa tarde WWWA. 0ote Iue, sempre Iue "ouver a necessidade de enviar uma informa$o ao broJser processada a partir de um arIuivo .apJ, essa informa$o deve estar contida dentro de um arIuivo A!F (ou AFE).

7 X"tmlY < XbodTY


Curso de Introduo a Plataforma ADVPL/ASP WebService 1

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

? % X` , local n . / n >V left(time(),<) 3 if val(n) X 7< 5 `Y 74 Dom 2ia WWW 77 X` 7< 6lse 7? `Y 7% Doa :arde WWW 7, X` 7. 6ndif 7/ `Y 73 75 XCbodTY <4 XC"tmlY 0a lin"a 7 e < encontramos as tags X"tmlY e XbodTY Iue como vimos faz parte do inicio e corpo de um documento F:M8. 0a lin"a % temos o indicador de script (X`), Iue tem como objetivo informar ao broJser Iue daIuele ponto em diante "+ um c'digo A21!8 A9! a ser executado. 9empre Iue for iniciar um script A21!8 A9! utiliza=se o indicador (X`) e para finalizar um script utiliza=se o indicador (`Y). 0a lin"a , estamos declarando a vari+vel n como uma vari+vel local. 0a lin"a / temos o c'digo n @A le=t9ti.e9;,";. Etilizamos a fun$o time() para retornar a "ora atual no formato "">mm>ss, utilizamos a fun$o left(string,posi$o) para retornar apenas as "oras ("") do conteMdo da fun$o time(). 6ste conteMdo ser+ armazenado na vari+vel n 0a lin"a 3 utilizamos a condi$o #- para verificar se n menor Iue 7<, lembrando Iue estamos trabal"ando com time de <% "s. 0a lin"a 5 estamos indicando com (`Y) o final do primeiro bloco de script. 0a lin"a 74 colocamos um texto F:M8

Curso de Introduo a Plataforma ADVPL/ASP WebService

1!

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

0a lin"a 77 iniciamos novamente um bloco de c'digo com o indicador (X `) 0a lin"a 7< colocamos o comando 6lse Iue faz parte da condi$o #-. Kue executado se a condi$o inicial n$o for verdadeira. 0a lin"a 7? colocamos novamente o indicado (X`) para iniciar um bloco de c'digo. 0as lin"as 7% e 7, colocamos a mensagem a ser enviada ao usu+rio caso a condi$o em #- for falsa e fec"amos o bloco de c'digo. 0a lin"a 7. encerramos a condi$o #- com 602#-. 0a lin"as 7/ e posteriores encerramos o bloco de c'digo e tambm informamos ao broJser Iue o documento F:M8 acaba por aIui. A:60abO> sempre Iue for finalizado um programa deve=se compilar o mesmo. O neste processo Iue o reposit'rio ser+ alimentado com as novas funcionalidades. !ara executar o programa, certifiIue=se Iue o mesmo j+ foi compilado e em seguida carregue o broJser e digite a seguinte E&8> "ttp>CCservidor>portaCuQex447.apJ , onde> Servidor> o nome do servidor onde est+ instalado o A!/ Web 9erver Porta> o nMmero da porta Iue o administrador configurou o A!/ Web 9erver, est+ informa$o encontra=se no arIuivo A!/srv.ini. !or default, a configuracao de porta do servidor Fttp do !rot"eus "abilitado na porta 34, default do protocolo F::!, de modo Iue nao precisamos informar a porta no DroJser, a n$o ser Iue alteremos as configuraes iniciais para "abilitar o servidor em uma porta diferente da 34 0nstru45o Do case

Curso de Introduo a Plataforma ADVPL/ASP WebService

1"

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

Outra estrutura Iue veremos agora a instru$o ase Iue funciona da mesma maneira Iue a instru$o #-. !ossibilitando criar lista de expresses para cada condi$o. A estrutura da instru &o 2ase ' a se#uinte: Do Case Case Xprimeira condi$o Y XinstrucoesY Case Xsegunda condi$o Y XinstruesY 7t:erBise XinstruesY &ndCase Loops Os 8oops s$o utilizados Iuando "+ a necessidade de percorrer n vezes o mesmo conjunto de instrues. Muito utilizado por exemplo para ler um bloco de registros em uma base de dados. ?or Xvari+velY >V XinGcioY to XfimY P step XpassoY R X#nstru$oY 1e>t 1 parCmetro step n&o ' obri#at+rio, e indica :ua! o incremento uti!i6ado para a variave!. (defau!tD=) W:ile Xcondi$oY X#nstru$oY &nddo

Captulo ) B *ecuperando Dados enviados por Post e +et


Curso de Introduo a Plataforma ADVPL/ASP WebService 1#

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

*ecuperando Dados co. Cet6do P7S2 -ormul+rio uma p+gina F:M8 contendo controles de entrada como textbox, listbox, radio buttom, c"ecL buttom e botes de execu$o. A finalidade de se utilizar um formul+rio manipular de alguma forma os dados informados pelo usu+rio. !ara isso temos em A21!8 A9! funes com a &KrT9tr, Iue nos retorna o conteudo de cada campo. F+ dois mtodos para se retornar o conteMdo de um formul+rio, o mtodo !O9: e o ;6:, o primeiro Iue tem como caracterGstica passar o conteMdo dos campos de maneira oculta, n$o aparece na lin"a de E&8 do broJser.

DttpPost/EF17C& DA VA*0GV&LE Dttp+et/EF17C& DA VA*0GV&LE DttpSession/EF17C& DA S&SSH7E 2escri$o> retorna o conteMdo dos campos de um formul+rio. !arcmetros> E913, DA VA/IFV,LG informe o nome do campo informado na propriedade name do formul+rio.

&>erccio@ 1amos exemplificar a recupera$o de dados utilizando o mtodo !O9: 1amos criar um formul+rio em F:M8. 0ote Iue informaremos o mtodo !O9: e a a$o "ttp>CCnome2o9ervidorCJQex44<.apJ dentro da tag -orm.

X"tmlY XbodT bgcolorV\[------\Y Xform met"odV\post\ actionV\"ttp>CClocal"ostCuQex44<.apJ\Y XpY0ome> Xinput tTpeV\text\ nameV\fieldQnome\Y XbrY Curso de Introduo a Plataforma ADVPL/ASP WebService 1$

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

#dade> Xinput tTpeV\text\ nameV\fieldQidade\Y XbrY Xinput tTpeV\submit\ nameV\9ubmit\ valueV\6nviar\Y XCpY XCformY XCbodTY XC"tmlY

Agora vamos escrever o cdigo em ADVPL ASP para nosso ar !ivo AP"
7 Eser -unction ex44<() < ? 8ocal cF:M8>V\\ % !rivate c0ome, c#dade , . c0ome >V Fttp9ession=YfieldQnome / c#dade >V Fttp9ession=YfieldQidade 3 5 W6D 6U:60262 #0#: cFtml 74 77 cF:M8>V FQteste447() 7< 7? W6D 6U:60262 602 7% 7, &eturn cF:M8

0a lin"a 7 estamos c"amando a fun$o Eser -unction, sempre obrigat'ria. 0as lin"as < e ? estamos definindo as vari+veis a serem utilizadas no c'digo. 0ote Iue as vari+veis c0ome e c#dade s$o do tipo !rivate Iue tambm podem ser lidas no A!F. 0a lin"a . estamos atribuindo para a vari+vel c0ome o conteudo do campo fieldQnome utilizando a fun$o Fttp!ost=YX0OM6 2A 1A&#d168Y. O mesmo serve para a lin"a /. As lin"as 5,77,7? e 7, j+ foram explicadas nos exercGcios anteriores. Agora vamos escrever o c'digo do arIuivo A!F
7 X"tmlY < XbodT bgcolorV\[------\Y nome> X`Vc0ome `Y X!Y % idade> X`Vc#dade `Y , XCbodTY . XC"tmlY

Curso de Introduo a Plataforma ADVPL/ASP WebService

1%

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

0as lin"as 7 e < estamos informando ao broJser Iue o documento F:M8 est+ iniciando 0a lin"a ? temos o texto nome> em F:M8 e em seguida indicamos com X ` o inGcio de um bloco de c'digo A21!8 A9!, onde estamos retornando ao broJser o conteudo da vari+vel c0ome, Iue neste momento est+ armazenada a string Iue vocS digitou no campo nome do formul+rio. O processamento deste exercGcio simples, entenda Iue no primeiro momento apresentamos uma documento F:M8 com um formul+rio com os campos 0ome e #dade para o usu+rio preenc"er, ap's o usu+rio informar os dados e clicar no bot$o 6nviar, enviado uma solicita$o ao servidor para ele executar a Eser -unction ex44< Iue informamos na propriedade action do formul+rio. Kuando est+ solicita$o c"ega ao servidor o mesmo j+ possui o conteudo dos campos do formul+rio e como nos codificamos, atribuGmos o conteudo das vari+veis com o conteudo dos campos e finalmente apresentamos o conteudo delas ao usu+rio utilizando o arIuivo A!F (ou AFE). *ecuperando Dados co. Cet6do +&2 O mtodo ;6: passa o conteMdo dos campos do formul+rio atravs da E&8. O conteMdo dos campos ser$o retornados no parcmetro Fttp;et= YX0OM6 2A 1A&#d168Y. A diferena b+sica entre o mtodo ;et e o !ost Iue o primeiro mostra na lin"a de E&8 do broJser o conteMdo dos campos informados no formul+rio, podendo ser visualizado pelo usu+rio. &>erccio ''%@ 1amos exemplificar a recupera$o de dados utilizando o mtodo ;et 1amos criar um formul+rio em F:M8. 0ote Iue informaremos o mtodo ;6: e a a$o "ttp>CCnomedo9ervidorCuQex44?.apJ dentro da tag -orm#

$%tml&
X"eadY XtitleYMetodo ;6:XCtitleY XC"eadY
Curso de Introduo a Plataforma ADVPL/ASP WebService 1&

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

XbodT bgcolorV\[------\Y F=or. .et:odAI<etI actionAI:ttp@//nistal@1"''/uJe>''% apBIE Xtable Jidt"V\<<`\ alignV\center\Y Xtr bgcolorV\[44..55\Y Xtd colspanV\<\Y Xdiv alignV\center\YXfont sizeV\<\ faceV\1erdana, Arial, Felvetica, sans= serif\YXbYXfont colorV\[------\YM6:eOacuteN2O ;6:XCfontYXCbYXCfontYXCdivY XCtdY XCtrY Xtr bgcolorV\[666666\Y Xtd Jidt"V\7/`\YXfont faceV\1erdana, Arial, Felvetica, sans=serif\ sizeV\<\Y0ome>XCfontYXCtdY Xtd Jidt"V\3?`\Y Xinput tTpeV\text\ nameV\fieldQnome\Y XCtdY XCtrY Xtr bgcolorV\[666666\Y Xtd Jidt"V\7/`\YXfont faceV\1erdana, Arial, Felvetica, sans=serif\ sizeV\<\Y9obrenome>XCfontYXCtdY Xtd Jidt"V\3?`\Y Xinput tTpeV\text\ nameV\fieldQsnome\Y XCtdY XCtrY Xtr bgcolorV\[666666\Y Xtd Jidt"V\7/`\YXfont faceV\1erdana, Arial, Felvetica, sans=serif\ sizeV\<\Y urso>XCfontYXCtdY Xtd Jidt"V\3?`\Y Xinput tTpeV\text\ nameV\fieldQcurso\Y XCtdY XCtrY Xtr bgcolorV\[666666\Y Xtd Jidt"V\7/`\Y Xdiv alignV\center\Y Finput tKpeAIsub.itI na.eAISub.itI valueAI&nviarIE XCdivY XCtdY Xtd Jidt"V\3?`\YenbspNXCtdY XCtrY XCtableY XCformY XCbodTY XC"tmlY Agora vamos escrever o cdigo do ar !ivo ap'#
Curso de Introduo a Plataforma ADVPL/ASP WebService 1'

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

7 Eser -unction ex44?() < ? 8ocal cF:M8>V\\ % !rivate c0ome, c90ome, c urso , . Web 6xtended #nit cFtml / c0ome >V Fttp;et=YfieldQnome 3 c90ome >V Fttp;et=YfieldQsnome 5 c urso >V Fttp;et=YfieldQcurso 74 77 cF:M8>VFQex44?() 7< 7? Web 6xtended 6nd 7% 7, &eturn cF:M8

0a lin"a 7 estamos declarando a fun$o Eser -unction, sempre obrigat'ria. 0a lin"a . estamos c"amando o comando Web 6xtended #nit cFtml para iniciar um ambiente de trabal"o Jeb. 0a lin"a / temos o seguinte c'digo c0ome >V Fttp;et=YfieldQnome Iue est+ c"amando a fun$o Fttp;et=Y enviando os dois parcmetros e atribuindo o retorno dela a vari+vel c0ome. 0a lin"a 3 temos o seguinte c'digo c90ome >V Fttp;et=YfieldQsnome Iue est+ c"amando a fun$o Fttp;et=Y enviando os dois parcmetros e atribuindo o retorno dela a vari+vel c90ome. 0a lin"a / temos o seguinte c'digo c urso >V Fttp;et=YfieldQcurso Iue est+ c"amando a fun$o Fttp;et=Y enviando os dois parcmetros e atribuindo o retorno dela a vari+vel c urso.

Agora vamos escrever o c'digo do arIuivo A!F X"tmlY XbodT bgcolorV\[------\Y


Curso de Introduo a Plataforma ADVPL/ASP WebService (

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

Xtable Jidt"V\/,`\Y XtrY Xtd colspanV\<\Y Xdiv alignV\left\YXbY2ados informados no formuleaacuteNrioXCbYXCdivY XCtdY XCtrY XtrY Xtd Jidt"V\7<`\ "eig"tV\7%\Y0ome>XCtdY Xtd Jidt"V\33`\ "eig"tV\7%\YFLA c1o.e LEXCtdY XCtrY XtrY Xtd Jidt"V\7<`\Y9obrenome>XCtdY Xtd Jidt"V\33`\YFLA cS1o.e LEXCtdY XCtrY XtrY Xtd Jidt"V\7<`\Y urso>XCtdY Xtd Jidt"V\33`\YFLA cCurso LEXCtdY XCtrY XCtableY XCbodTY XC"tmlY

Captulo , B Acessando -ase de Dados

Curso de Introduo a Plataforma ADVPL/ASP WebService

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

0ntrodu45o F+ duas maneiras de acessar e manipular uma base de dados, uma utilizando o odeDase (.2D-) outra maneira atravs do :O! O006 : Iue possibilita o acesso a v+rios banco de dados (9K8, #0-O&M#U, etc). &>erccio ''!@ 1amos exemplificar uma consulta a uma base de dados. A seguir temos o arIuivo .apJ, Iue tem como objetivo criar o ambiente no A!/ Web 9erver, conforme a fun$o vista.
7 Eser -unction ex44%() < ? 8ocal cF:M8>V\\ % , Web 6xtended #nit cFtml . 3 cF:M8>V "Qex44% 5 74 Web 6xtended 6nd 77 7< &eturn cF:M8 ArIuivo ex44%.ap" X"tmlY XbodT bgcolorV\[------\Y Xtable Jidt"V\/,`\ borderV\4\ cellpaddingV\4\ cellspacingV\7\ bgcolorV\[666666\Y Xtr bgcolorV\[44??..\Y Xtd colspanV\?\Y Xdiv alignV\center\YXfont colorV\[------\YXbYXfont faceV\1erdana, Arial, Felvetica, sans=serif\ sizeV\<\Y O09E8:A DA96 26 2A2O9XCfontYXCbYXCfontYXCdivY XCtdY XCtrY Xtr bgcolorV\[44??55\Y XtdY Xdiv alignV\center\YXbYXfont faceV\1erdana, Arial, Felvetica, sans=serif\ sizeV\<\ colorV\[------\Y eoacuteNdigoXCfontYXCbYXCdivY XCtdY XtdY Xdiv alignV\center\YXbYXfont faceV\1erdana, Arial, Felvetica, sans=serif\ sizeV\<\ colorV\[------\Y2escrieccedilNeatildeNoXCfontYXCbYXCdivY XCtdY XtdY
Curso de Introduo a Plataforma ADVPL/ASP WebService
"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

Xdiv alignV\center\YXbYXfont faceV\1erdana, Arial, Felvetica, sans=serif\ sizeV\<\ colorV\[------\YKuantidade em 6stoIue EniteaacuteNrioXCfontYXCbYXCdivY XCtdY XCtrY FL dbselectarea9M?A"M; db<otop9; B:ile N&o=9; LE Xtr bgcolorV\[------\Y XtdEFLA?A"JC7D LEXCtdY XtdYFLA?A"JD&SC* LEXCtdY XtdYFLA?A"JO2D&S2 LEXCtdY XCtrY FL dbsPip9; enddo LE XCtableY XCbodTY XC"tmlY

Observe o bloco de c'digo em negrito, o comando dbselectarea(f-A<f) seleciona a tabela -A< Iue contm os dados Iue necessitamos para a consulta. O comando dbgotop() posiciona=se no primeiro registro da tabela -A<. A seguir utilizamos o loop B:ile N&o=9; Iue determina a execu$o do c'digo adiante at Iue a condi$o N&o=9; (6nd of -ile) for verdadeira. As instrues dentro do loop s$o para retornar o conteMdo dos campos ?A"JC7D, ?A"JD&SC* e ?A"JO2D&S2 dentro das :ags XtdY. 6 finalmente executamos o comando dbsPip9; Iue posiciona=se no pr'ximo registro.

0nserindo dados e. u.a tabela &>erccio ) 1amos fazer um exercGcio Iue ten"a como objetivo inserir um registro na tabela -A< e em seguida apresentaremos todos os registros desta tabela no broJser.
Curso de Introduo a Plataforma ADVPL/ASP WebService !

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

(# !rimeiramente, vamos criar o arIuivo ap: 9ou a:u;, Iue tem como objetivo formar um formul+rio para Iue o usu+rio insira os dados (c'digo do produto, descri$o do produto e Iuantidade em estoIue). X"tmlY X"eadY XtitleY#nserindo &egistrosXCtitleY Xmeta "ttp=eIuivV\ ontent=:Tpe\ contentV\textC"tmlN c"arsetViso=33,5=7\Y XC"eadY XbodT bgcolorV\[------\Y F=or. .et:odAIP7S2I actionAI:ttp@//local:ost/BJe>'') apBIE Xtable Jidt"V\<<`\ alignV\center\Y Xtr bgcolorV\[44..55\Y Xtd colspanV\<\Y Xdiv alignV\center\YXfont sizeV\<\ faceV\1erdana, Arial, Felvetica, sans= serif\YXbYXfont colorV\[------\Y#nserindo &egistrosXCfontYXCbYXCfontYXCdivY XCtdY XCtrY Xtr bgcolorV\[666666\Y Xtd Jidt"V\7/`\YXfont faceV\1erdana, Arial, Felvetica, sans=serif\ sizeV\<\Y od>XCfontYXCtdY Xtd Jidt"V\3?`\Y Finput tKpeAIte>tI na.eAI=ieldJcodIE XCtdY XCtrY Xtr bgcolorV\[666666\Y Xtd Jidt"V\7/`\YXfont faceV\1erdana, Arial, Felvetica, sans=serif\ sizeV\<\Y2escricao>XCfontYXCtdY Xtd Jidt"V\3?`\Y Finput tKpeAIte>tI na.eAI=ieldJdescrIE XCtdY XCtrY Xtr bgcolorV\[666666\Y Xtd Jidt"V\7/`\YXfont faceV\1erdana, Arial, Felvetica, sans=serif\ sizeV\<\YKtde. 6stoIue>XCfontYXCtdY Xtd Jidt"V\3?`\Y
Curso de Introduo a Plataforma ADVPL/ASP WebService "

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

Finput tKpeAIte>tI na.eAI=ieldJqtdestIE XCtdY XCtrY Xtr bgcolorV\[666666\Y Xtd Jidt"V\7/`\Y Xdiv alignV\center\Y Xinput tTpeV\submit\ nameV\9ubmit\ valueV\#nserir\Y XCdivY XCtdY Xtd Jidt"V\3?`\YenbspNXCtdY XCtrY XCtableY XCformY XCbodTY XC"tmlY 0ote Iue neste c'digo utilizamos o .Qtodo P7S2 no formul+rio, visto anteriormente nesta apostila. Agora vamos escrever o c'digo do arIuivo apB, nele Iue iremos escrever os comandos para recuperar os dados enviados pelo formul+rio e em seguida grava=los na base de dados. 7 Eser -unction ex44,() < ? 8ocal cF:M8>V\\ % 8ocal c od, c2escr, nKtd6st ,
. Web 6xtended #nit cFtml

/ 5 74 77 7< 7? 7% 7, 7. 7/ 73 75

// /ecupera os dados do formu!"rio. c od >V Fttp!ost=YfieldQcod nKtd6st >V Fttp!ost=YfieldQItdest c2escr >V Fttp!ost=YfieldQdescr // Hrava os dados. #f &ec8ocL(f-A<f,.t.) -A<=Y-A<Q O2 >V c O2 -A<=Y-A<Q269 & >V c2escr -A<=Y-A<QK:269: >V val(nKtd6st)
#

Curso de Introduo a Plataforma ADVPL/ASP WebService

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

<4 M9EnlocL() << cF:M8>VFQex44% 6lse Ftml >V WebAlert(@6rro ao incluir registro.A) 6ndif <? <% Web 6xtended 6nd <, </ &eturn cF:M8 0as lin"as ? e % estamos declarando as vari+veis como locais Iue ser$o utilizadas no decorrer do programaN 0a lin"a . estamos comunicando ao A!/ Web 9erver Iue ser+ inicializada uma conex$o JebN 0a lin"a 74 temos um coment+rio. :udo Iue estiver ap's os caracteres @CCA e na mesma lin"a n$o ser$o considerados no momento da compila$oN 0as lin"as 77,7< e 7? estamos recuperando os dados enviados para o 9erver atravs do formul+rio. Os dados c'digo do produto, descri$o do produto e Iuantidade em estoIue ser$o armazenados nas vari+veis c od, c2escr e nKtd6st respectivamente. 0ote Iue a vari+vel nKtd6st inicia a sua nomenclatura com o caracter n porIue a mesma uma vari+vel do tipo nMmerica. 0a lin"a 7, temos outro coment+rio. 0a lin"a 7. estamos inicializando o processo para gravar um registro na tabela. O comando &ec8ocL(f-A<f,.t.) tem como objetivo travar o registro a ser gravado para Iue nen"um outro usu+rio Iue esteja executando o mesmo programa grave no mesmo nMmero de registro. 6ste comando retornar+ .t. (true) se a condi$o for verdadeira, ou seja se ningum estiver tentando gravar no mesmo nMmero de registroN 0a lin"a 7/ estamos gravando o conteudo da vari+vel c od no campo -A<Q od da tabela -A<. 0ote Iue para gravar um registro utilizamos o comando &6!8A 6N

Curso de Introduo a Plataforma ADVPL/ASP WebService

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

0a lin"a 73 estamos gravando o conteudo da vari+vel c2escr no campo -A<Q269 & da tabela -A<. 0ote Iue para gravar um registro utilizamos o comando &6!8A 6N 0a lin"a 75 temos um diferencial entre as duas lin"a anteriores, pois antes de mandar gravar o dado na base de dados, estamos convertendo a vari+vel nKtd6st em um valor nMmerico. 0a lin"a <4 estamos liberando o registro para ser manipulado com o comando M9En8ocL(). 0a lin"a << note Iue estamos solicitando a execu$o do arIuivo ex44%, ou seja, este arIuivo foi escrito no exercGcio anterior e tem como objetivo listar os registros da base de dados -A<, concluindo, estamos reutilizando o c'digo do exercGcio anterior para finalizar o nosso programa.

Captulo $ Web Services e. ADVPL / CL0&12

Curso de Introduo a Plataforma ADVPL/ASP WebService

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

0ntrodu45o Kuando um Web 9ervice criado e disponibilizado , junto dele tambm disponibilizada a defini$o do servio , seus argumentos , estruturas e retornos (W928) . !ara nos utilizarmos de um Web 9ervice , precisamos montar um programa = lient Iue seja capaz de montar um @envelopeA 9OA! com os dados necess+rios ^o processamento do 9ervio , realizar a c"amada , e tratar o respectivo retorno e excesses . 6mbora existam Web 9ervices Iue podem ser acessados via Fttp @diretoA , apenas passando parcmetros via E&8 , o lient de Web 9ervices do Advanced !rot"eus tSm seu foco e recursos direcionados apenas ^ servios Iue possuam interface de comunica$o Iue realize !O9: de pacotes de dados UM8 em formato 9OA!. 2er.os 2Qcnicos S7AP = 9igla de 9imple Objetc Access !rotocol, ou protocolo simples de acesso a objetos. O 9OA! um padr$o aberto, baseado em UM8, criado pela Microsoft, Ariba e #DM para padronizar a transferSncia de dados entre aplicaes. !ode ser usado em combina$o com v+rios outros protocolos comuns da #nternet, como F::! e 9M:!. WSDL = Web 9ervice 2escription 8anguage. 9ubmetida ^ W? = o 'rg$o padronizador da #nternet = . A linguagem W928 define regras baseadas em UM8 para descrever servios Jeb. W&- S&*V0C&S = programa completo ou componente de softJare residente num servidor Jeb. RCL = 9igla de 6xtensible MarLup 8anguage, o UM8 uma linguagem baseada em tags semel"ante ao F:M8. 9ua principal caracterGstica a extensibilidade. Kuem emite um documento UM8 pode criar tags personalizadas, Iue s$o explicadas num documento anexo, Iue tem extens$o U92. RSD = 9igla de UM8 9c"ema 2efinition. ArIuivo associado a um documento UM8 Iue descreve e valida aos dados no documento. Assim como as linguagens de programa$o, os U92s aceitam dados de diferentes tipos, como nMmeros, data e moeda.

Curso de Introduo a Plataforma ADVPL/ASP WebService

&

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

De=ini45o do Servi4o e. Advpl / Client !ara a cria$o do c'digo=fonte de um lient de um Web 9ervice , foi criada uma ferramenta de gera$o autom+tica do fonte a partir da defini$o do 9ervio (W928) , integrada ao #26 , e foram criadas classes especiais reservadas em Advpl para a montagem de tal fonte . Ao gerarmos um fonte client para um W6D 9ervice, este conter+ as definies dos mtodos C aes do servio , a(s) estrutura(s) utilizada(s) no mesmo , e a(s) classe(s) intermedi+ria(s) de uso interno para montagem e desmontagem da(s) estrutura(s) N visando o encapsulamento de todos os tratamentos de envio e recebimento de dados atravs de pacotes 9OA!. O -onte gerado atravs do assistente de cria$o de fonte deve preferencialmente ser gerado e compilado em um arIuivo exclusivo , destinado unica e exclusivamente a este c'digo. 6 , por tratar=se de uma classe Advpl gerada a partir da defini$o de um servio , n$o devemos inserir eCou alterar nen"uma das definies geradas pelo assistente , pois as mesmas ser$o perdidas caso o fonte seja gerado novamente . Passos para a utiliSa45o do ?onte / Client !artindo de uma classe de Web 9ervices lient , gerado com o Assistente de 9ervices lient do #26 , devemos seguir alguns passos para a utiliza$o desta classe em nosso sistema. 9co eles > 7 < ? % , . riar uma vari+vel ( preferSncialmente local ) para armazenar o objeto do Web 9ervice #nicializar o objeto do Web96rvice ( Ws9ervico()>0eJ() ) 1erificar os parcmetros e seus respectivos tipos a serem utilizados no mtodo , declarados no servio. Atribuir no(s) parametro(s) necess+rios ^ c"amada do mtodo ps valores desejados ou c"ame diretamente o mtodo , passando os parametros necess+rios na c"amada do mesmo. 1erficar o retorno do mtodo . aso este ten"a retornado .:. , o processamento foi executado com sucesso e a(s) propriedade(s) de retorno do mtodo est+($o) alimentada(s) aso retorne .-. , ocorreu uma fal"a na reIuisi$o eCoui processamento do 9ervio . !ara recuperar os detal"es da fal"a , utilizamos a funcao ;etW9 6rror()
'

Curso de Introduo a Plataforma ADVPL/ASP WebService

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

Cria45o de u. Web Service CL0&12 Passo a Passo Objetivo > riar um Web9ervice lient em Advpl , Iue utilize o servio exemplificado no t'pico @ ria$o de um Web9ervice B 96&16& passo a passo. @ Passo 1 @ Deter.inar co.o obter o WSDL do servi4o dese8ado A maioria das definies W928 dos servios disponiveis na W6D s$o acessados atravs de uma E&8 , em geral apontando para o servidor onde o servio est+ publicado , contendo o nome do servio na url e um sufixo gW928 ou .W928 na Erl. 0co "+ padr$o definido para tal , de modo Iue cada servidor pode disponibilizar ( ou n$o ) o W928 de uma maneira diferente . O W928 de alguns servios restritos ( como por execmplo o servio de busca na base de dados do ;oogle ) s$o disponibilizados em arIuivo A9 ## , enviados por e=mail , apos um cadastro no site e autoriza$o da empresa para o uso do servio por ele provido. 0o nosso exemplo , a defini$o do servio obtida diretamente via "ttp , atravs do linL "ttp>CClocal"ostC96&16&:#M6.apJgW928 aso vc execute este linL atravs de um Web DroJser ( #nternet .6xplorer. , por exemplo ) , ser+ exibido no broJse um arIuivo em UM8 correspondendo ^ defini$o do servio , conforme exemplo abaixo )
#$xml version%"&.'" encoding%"utf()" $* #definitions xmlns+,ttp%")tt*+//sc)emas,-mlsoa*,or.//sdl/)tt*/" xmlns+soap%")tt*+//sc)emas,-mlsoa*,or.//sdl/soa*/" xmlns+s%")tt*+/////,/!,or./ ((1/01LSc)ema " xmlns+s'%")tt*+//local)ost/" xmlns+soapenc%")tt*+//sc)emas,-mlsoa*,or./soa*/encodin./ " xmlns+tm%")tt*+//microsoft,com//sdl/mime/te-t1atc)in./" xmlns+mime%")tt*+//sc)emas,-mlsoa*,or.//sdl/mime/" target-amespace%")tt*+//local)ost/ " xmlns%")tt*+//sc)emas,-mlsoa*,or.//sdl/"* #t.pes* #s+sc,ema element/orm0efault%"2ualified" target-amespace%")tt*+//local)ost/ "* #s+element name%"345S46V465I14 "* #s+complex1.pe* #s+se2uence 3* #3s+complex1.pe* #3s+element* #s+element name%"345S46V465I1464SP78S4 "* #s+complex1.pe* #s+se2uence* #s+element minOccurs%"1" maxOccurs%"1" name%"345S46V465I1464S9L5 " t.pe%"s+strin." 3* #3s+se2uence* #3s+complex1.pe*

Curso de Introduo a Plataforma ADVPL/ASP WebService

!(

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

#3s+element* #3s+sc,ema* #3t.pes* #message name%"345S46V465I14S7API8"* #part name%"*arameters" element%"s(+345S46V465I14" 3* #3message* #message name%"345S46V465I14S7AP795 "* #part name%"*arameters" element%"s(+345S46V465I1464SP78S4 " 3* #3message* #port1.pe name%"S46V465I14S7AP "* #operation name%"345S46V465I14"* #input message%"s(+345S46V465I14S7API8 " 3* #output message%"s(+345S46V465I14S7AP795 " 3* #3operation* #3port1.pe* #binding name%"S46V465I14S7AP" t.pe%"s(+S46V465I14S7AP"* #soap+binding transport%")tt*+//sc)emas,-mlsoa*,or./soa*/)tt*" st.le%"document " 3* #operation name%"345S46V465I14"* #soap+operation soap4ction%")tt*+//local)ost/345S46V465I14 " st.le%"document " 3* #input* #soap+bod. use%"literal" 3* #3input* #output* #soap+bod. use%"literal" 3* #3output* #3operation* #3binding* #service name%"S46V465I14"* #port name%"S46V465I14S7AP" binding%"s(+S46V465I14S7AP "* #soap+address location%")tt*+//local)ost/S46V465I14,a*/" 3* #3port* #3service* #3definitions*

Passo " @ +erar o ?onte AdvPl do Client usando o Assistente do 0D& Ao gerarmos um fonte client para um W6D 9ervice, este fonte conter+ as definies dos metodos do servio , a(s) estrutura(s) utilizada(s) no mesmo , e a(s) classe(s) intermedi+ria(s) de uso interno para montagem e desmontagem da(s) estrutura(s) N visando o encapsulamento de todos os tratamentos de envio e recebimento de dados atravs de pacotes 9OA!. O -onte gerado atravs do assistente de cria$o de fonte deve preferencialmente ser gerado e compilado em um arIuivo exclusivo , destinado unica e exclusivamente a este c'digo. 6 , por tratar=se de uma classe Advpl gerada a partir da defini$o de um servio , n$o devemos inserir eCou alterar nen"uma das definies geradas pelo assistente , pois as mesmas ser$o perdidas caso o fonte seja gerado novamente .
Curso de Introduo a Plataforma ADVPL/ASP WebService !1

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

!ara gera$o do fonte lient em Advpl para utilizar este servio , devemos criar um novo arIuivo .!&U no #26 , especificamente para conter as classes deste servio . 6nt$o , acessamos o menu @-erramentasA, op$o @;erar iente WbservicesA . 0este momento , ser+ mostrado na tela um pop=up semel"ante ao mnostrado abaixo >

0o campo de entrada de dados , devemos digitar a E&8 de onde o servidor ir+ obter a defini$o do Web96rvice. ( no nosso caso , "ttp>CClocal"ostC96&16&:#M6.apJgW928 ) . Ap's a confirma$o da janela acima , caso o processamento ocorra com suicesso , na janela de mensagens do #de ser+ mostrado um texto semel"ante ao abaixo > 6stabelecendo conex$o com o server... !or favor aguarde. Obtendo descri$o do Web9ervice... -inalizando conex$o com o server... OL 6 , na janela do novo arIuivo criado , dever+ ser criado um c'digo=fonte semel"ante ao mostrado abaixo )
#INCLUDE "PROTHEUS.CH" #INCLUDE "APWEBSRV.CH" --- header do servi o --!" ################################################################ WSDL Lo$a%io& h%%'(!!)o$a)hos%!SERVERTI*E.a'+,WSDL -erado e. /0!12!20 /3(0/(04 O5serva 6es C7di8o-9o&%e 8erado 'or ADVPL WSDL C)ie&% /.20/0/3 B A)%era 6es &es%e ar:;ivo 'ode. $a;sar <;&$io&a.e&%o i&$orre%o e ser=o 'erdidas $aso o $7di8o-<o&%e se>a 8erado &ova.e&%e. ################################################################ "! !" ------------------------------------------------------------------------------WSDL Servi$e WSSERVERTI*E ------------------------------------------------------------------------------- "! --- de$)ara =o da C)asse C)ie&% do We5Servi$e ? $o. .e%odos e 'ro'riedades ;%i)i@adas ---

Curso de Introduo a Plataforma ADVPL/ASP WebService

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

WSCLIENT WSSERVERTI*E WS*ETHOD NEW WS*ETHOD -ETSERVERTI*E WSDATA AURL AS S%ri&8 WSDATA $-ETSERVERTI*ERESULT AS s%ri&8 ENDWSCLIENT --- de$)ara =o do .B%odo NEW ? 'ara a $ria =o do O5>e%o ! Servi o --WS*ETHOD NEW WSCLIENT WSSERVERTI*E ((AURL (# NIL (($-ETSERVERTI*ERESULT (# "" Re%;r& Se)< !" ------------------------------------------------------------------------------WSDL *e%hod -ETSERVERTI*E o< Servi$e WSSERVERTI*E ------------------------------------------------------------------------------- "! --- De<i&i =o do .B%odo ? :;e re$e5e os 'arC.e%ros de $ha.ada ? eDe$;%a o servi o e a)i.e&%a as 'ro'riedades de re%or&o do .e%odo ? $o&%e&do os e&$a's;)a.e&%os &e$essErios 'ara %ra%a.e&%o de eD$ess6es --WS*ETHOD -ETSERVERTI*E WSSEND NULLPARA* WSRECEIVE $-ETSERVERTI*ERESULT WSCLIENT WSSERVERTI*E Lo$a) $Soa' (# "" ? oF.)Re% BE-IN WS*ETHOD DE9AULT ((AURL (# "h%%'(!!)o$a)hos%!SERVERTI*E.a'+" $Soa' G# HI-ETSERVERTI*E D.)&s#"h%%'(!!)o$a)hos%!"JH $Soa' G# "I!-ETSERVERTI*EJ" oF.)Re% (# Sv$Soa'Ca))K Se)<?$Soa'?L "h%%'(!!)o$a)hos%!-ETSERVERTI*E"?L "DOCU*ENT"?"h%%'(!!)o$a)hos%!"?M (($-ETSERVERTI*ERESULT (# D-e%I&<oK oF.)Re% ? "A-ETSERVERTI*ERESPONSE(A-ETSERVERTI*ERESULT(TEFT" ? "" M END WS*ETHOD oF.)Re% (# NIL Re%;r& .T.

O fonte acima constitui uma lasse em Advpl , gerada para realizar a interface com a classe original publicada no 9erver, j+ realizando os tratamentos adeIuados para realizar a comunica$o via "ttp com o servidor onde o servio est+ publicado. 1ale obvervar Iue as lin"as em negrito no fonte acima nco foram

Curso de Introduo a Plataforma ADVPL/ASP WebService

!!

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

inseridas pelo assistente do #26 , mas acrescentadas a este documento para fins did+ticos. 0ele , observamos um ca"eal"o , contendo informaes sobre a localiza$o do W928 utilizado para a gera$o do fonte , data e "ora de gera$o e vers$o do engine de Web9ervices utilizado . 8ogo abaixo , a declara$o de uma cliasse lient de Web9ervices ( W9 8#60: W996&16&:#M6 ) , com o mtodo neJ() para inicializa$o das propriedades advpl da classe . 6 , em seguida , a declara$o do mtodo de busca de For+rio ( W9M6:FO2 ;6:96&16&:#M6 ) , Iue n$o envia parcmetro algum , e retorna o "or+rio atual do server em >> c;6:96&16&:#M6&69E8: , com todos os tratamentos necess+rios embutidos.

Passo % @ Criar u. =onte que utiliSe esta classe para a obten45o do :or#rio Agora , criamos um novo arIuivo no #26 , e montamos uma fun$o para utilizar a classe de Web 9ervices lient para obter o "or+rio no servidor.
/ 0 1 N O P 3 Q 4 /2 // /0 /1 /N #INCLUDE "PROTHEUS.CH" User 9;&$%io& Tes%C)ie&%KM Lo$a) oSv$ (# NIL oSv$ (# WSSERVERTI*EKM(Ne+KM I< oSv$(-ETSERVERTI*EKM a)er%K"HorErio &o Servidor ( "G oSv$($-ETSERVERTI*ERESULTM E)se a)er%K"Erro de EDe$; =o ( "G-e%WSCErrorKMM E&di< Re%;r& 2eclaramos a utiliza$o do #nclude @!rot"eus.c"A , contendo as definies dos comandos A21!8 e demais constantes riamos uma Eser -unction para utilizar o Web 9ervice 2eclaramos uma vari+vel local para conter o Objeto do Web 9ervice

8in"a 7 8in"a ? 8in"a % lient

Curso de Introduo a Plataforma ADVPL/ASP WebService

!"

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

8in"a . 8in"a 3

8in"a 5 8in"a 77

8in"a 7?

!ara utilizarmos o servio , alimentamos a vari+vel o9vc com uma onva instcncia do Web 9ervices lient , obtida atravs da sintaxe X0OM6Q2OQ96&1# OY()>0eJ() "amamos a execu$o do Mtodo ;et9erver:ime a partir do Objeto do servio o9rv , sem passar IualIuer parametro. O retorno de um mtodo do client pode ser .:. (true) em caso de execu$o com sucesso ou .-. (false) em caso de fal"a de execu$o . aso o servio ten"a sido executado com sucesso , o retorno esperado alimenrado na propriedade c;et9erver:ime&esult do objeto do servio. aso contr+rio ( retorno .-. ) , ocorreu alguma fal"a na c"amada do servio, como por exemplo o servidor n$o estava no ar, demorou muito pra responder ( time=out ) , entre outras. !ara recuperarmos maiores detal"es sobre a ocorrSncia de erro , utilizamos a fun$o ;etW9 error() , Iue retorna uma string com o resumo da ocorrSncia . -inalizamos o programa de teste com um &eturn

Passo ! @ &>ecutar o pro<ra.a de testes Abra uma nova instcncia do Ap &emote , e execute a fun$o EQ:69: 8#60: . aso o Web 9ervice esteja no ar e funcionando, e o fonte client seja devidamente compilado e sem erros , o resultado esperado uma janela semel"ante ^ mostrada abaixo >

0o ambiente Iue montamos para teste , o 9ervidor de Web9ervices e o lient estco no !rot"eus , compilados no mesmo &eposit'rio de Objetos . 6nt$o , vamos desabilitar o 9erver F::! do !rot"eus (colocando enableV4 na c"ave P"ttpR do arIuivo de consigura$o do servidor) , re=iniciar o 9erver

Curso de Introduo a Plataforma ADVPL/ASP WebService

!#

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

!rot"eus , e executar o programa client novamente . 2evemos obter uma tela semel"ante ^ exemplificada abaixo >

Passo ) @ 7bter in=or.a4Tes de Udebu<V 1isto at o passo % , vemos um client funcionando perfeitamente . Agora , imaginemos Iue , durante o desenvolvimento e testes do client do servio , faam=se necess+rias determinadas informaes internas has rotinas de execu$o do servio no lient Advpl . !ara tal , foi criada uma fun$o Iue permite definir em tempo de execu$o , um nivel de detal"amento de informaes adicionais relacionadas ao Web 9ervice N informaes estas Iue ser$o mostradas no onsole do 9erver !rot"eus ( caso "abilitado ) . a -un$o para definir o nivel de detal"e c"ama=se W9282bg8evel() , e recebe um nMmero como parcmetro > ' 5 default 6 & 9 7em informaes adicionais. 4penas 7tring 7O48 de retorno do 7erver. 7trings 7oap de Envio e :etorno.

6nt$o , na lin"a / , vamos acrescentar a instru$o W9282bg8evel(<) , para ativar o nivel mais completo de informacoes adicionais , e vamos obervar no console do servidor as mensagens apresentadas durante a execu$o do fonte de testes do client . 2evemos obter um ec"o no console do server semel"ante ao exemplo abaixo > I&i$ia&do Thread Ksi8a24QN? AUTO*ANM... ------------------------------------------------------------------------------Sv$Soa'Ca)) %o h%%'(!!a;%o.a&(Q222!+e5servi$e!SERVERTI*E.a'+ ! DOCU*ENT Na.eS'a$e h%%'(!!a;%o.a&(Q222!+e5servi$e!
Curso de Introduo a Plataforma ADVPL/ASP WebService !$

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

Soa'A$%io& h%%'(!!a;%o.a&(Q222!+e5servi$e!-ETSERVERTI*E Ca))ed <ro. -ETSERVERTI*E K /13M Ca))ed <ro. UATESTCLIENT K /2M ---------------------------------- SOAPSEND ----------------------------------I,D.) versio&#"/.2" e&$odi&8#";%<-Q",J Isoa'(E&ve)o'e D.)&s(Dsi#"h%%'(!!+++.+1.or8!022/!F*LS$he.a-i&s%a&$e" D.)&s(Dsd#" h%%'(!!+++.+1.or8!022/!F*LS$he.a" D.)&s(soa'#"h%%'(!!s$he.as.D.)soa'.or8!soa'!e& ve)o'e!"J Isoa'(BodRJ I-ETSERVERTI*E D.)&s#"h%%'(!!a;%o.a&(Q222!+e5servi$e!"J I!-ETSERVERTI*EJ I!soa'(BodRJ I!soa'(E&ve)o'eJ --------------------------------------------------------------------------------------------------------------- POST RETURN --------------------------------I,D.) versio&#"/.2" e&$odi&8#";%<-Q",JIsoa'(E&ve)o'e D.)&s(Dsi#"h%%'(!!+++.+1.or 8!022/!F*LS$he.a-i&s%a&$e" D.)&s(Dsd#"h%%'(!!+++.+1.or8!022/!F*LS$he.a" D.)&s(so a'#"h%%'(!!s$he.as.D.)soa'.or8!soa'!e&ve)o'e!"JIsoa'(BodRJI-ETSERVERTI *ERESPONSE D.)&s#"h%%'(!!a;%o.a&(Q222!+e5servi$e!"JI-ETSERVERTI*ERESULTJ/2(13(/2 I!-ETSERVE RTI*ERESULTJI!-ETSERVERTI*ERESPONSEJI!soa'(BodRJI!soa'(E&ve)o'eJ ------------------------------------------------------------------------------9i. Thread Ksi8a24QN? AUTO*ANM BR%esI& 31 BR%esO;% 3O O texto marcado em azul claro s$o as mensagens informativas a respeito da c"amada do Web9ervice , informando a E&8 c"amada , o estilo soap de troca de dados ( docu.ent ) , o 0ame9pace e o 9oapAction utilizados. O :exto marcado em verde (9OA!9602) informa o conteudo do pacote 9oap Iue foi enviado ( postado ) ao 9ervidor , e o conteudo em amarelo ( !O9: &6:E&0 ) informa o conteMdo do pacote 9oap devolvido pelo 9erver referente ^ esta solicita$o. Kuando ocorre um erro IualIuer , relacionado ha execu$o do lient Web 9ervices , o mtodo c"amado retorna .-. , e o erro pode ser recuperado atravs da fun$o ;etW9 error() , vista anteriormente . !ara cada excess$o prevista no lient , existe um c'digo de erro correspondente, todos eles prefixados com W9 6&& . A maioria das ocorrSncias est+ relacionada ha gera$o do 'digo
Curso de Introduo a Plataforma ADVPL/ASP WebService !%

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

fonte do lient Advpl utilizado=se o #26. :odas as ocorrenctas de excess$o tratadas peo Web 9ervices lient Advpl est$o relacionadas no :'pico Web 9ervices lient B 'digos de 6rro .

Web Services Client Codi<os de &rro WSC&**''' / WSDL n5o suportado @ &>iste. F1E Servi4os declarados !or defini$o , um W928 deve conter um e apenas um servio declarado , com um ou mais mtodos . aso sejam identificados mais de um servio no mesmo W928 , no momento da gera$o do fonte , o processo abortado com esta mensagem , informando em X0Y o numero de servios identificados no W928. WSC&**''1 / 15o :# -indin<s S7AP para a <era45o do Servi4o 2urante a gera$o do codigo=fonte para lient Advpl a partir de uma defini$o de servio (W928) , uma vez identificado o servio , o gerador de c'digo procura a declara$o dos D#02#0;9 no W928. aso esta declara$o n$o esteja presente , a rotina considera o W928 incompleto , e aborta o processo de gera$o de c'digo com esta mensagem . WSC&**''" / FS2*WC2J1AC&E / FS2*WC2J2XP&E 9-; &strutura n5o encontrada 2urante a gera$o do codigo=fonte para lient Advpl a partir de uma defini$o de servio (W928) , s$o analisados todos os parcmetros e estruturas utilizadas pelos mtodos do servio . aso alguma estrutura seja declarada no servio, porm n$o seja encontrada a identifica$o da mesma no W928 , este considerado inv+lido , sendo o processo abortado com a mensagem acima , onde a estrutura n$o encontrada identificada em X9:&E :Q0AM6Y e X9:&E :Q:i!6Y WSC&**''% / &nu.eration n5o suportado @ FS2*WC2J1AC&E / FS2*WC2J2XP&E 2urante a gera$o do codigo=fonte para lient Advpl a partir de uma defini$o de servio (W928) , s$o analisados todos os parcmetros e estruturas
Curso de Introduo a Plataforma ADVPL/ASP WebService !&

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

utilizadas pelos mtodos do servio . Kuando encontrada uma estrutura \simpletTpe\ com um \enumeration\ ( lista de parametros v+lidos pr= determinada ) , os tipos suportados at a vers$o fA21!8 W928 lient 7.4<7775 Df s$o > 9:&#0;, -8OA:, 2OED86, 26 #MA8, #0:, #0:6;6&, E09#;0628O0;, E09#;062#0:, 8O0; . aso o W928 conten"a um \enumeration\ com uma lista de itens de algum tipo Iue n$o os declarados acima ( tipo n$o supirtado ) , o processamento abortado com a mensagem acima , onde o \enumeration\ n$o suportado identificado em X9:&E :Q0AM6Y e X9:&E :Q:i!6Y WSC&**''! / Aponta.ento de pendYncia ''1- e. 0.ple.enta45o para 9F1E; FS2*WC2J1AC&E Apos a an+lise inicial dos parametros e estruturas utilizadas no servio , as estruturas pendentes s$o analizadas recursivamente at Iue todas as estruturas utilizadas sejam processadas. Kuando deste processamento , uma estrutura conten"a um elemento Iue aponte para uma outra estrutura , e esta for encontrada registrada n$o como uma estrutura ( complextTpe ) N o W928 considerado inv+lido , e o processo de gera$o abortado com a mensagem acima, identificando a estrutura pendente em X9:&E :Q0AM6Y WSC&**'') / Aponta.ento de pendYncia ''1A e. 0.ple.enta45o para 9F1E; FS2*WC2J1AC&E 9imilar ao W9 6&&44% , esta ocorrSncia reproduzida Iuando uma estrutura conten"a um elemento Iue aponte para uma outra estrutura , e esta segunda estrutura n$o for encontrada no W928 N conseIuentemente o processo de gera$o abortado com a mensagem acima, identificando a estrutura pendente em X9:&E :Q0AM6Y WSC&**'', / '1 &.ptK Para.1a.e @ aCs< F1E Kuando da an+lise de parcmetros ( Messages ) a partir de um W928 , aso um Message n$o ten"a nome definido , O W928 considerado inv+lido , e o processo de gera$o abortado com a mensagem acima, identificando em X0Y o elemento #nterno do arraT de Messages do gerador de c'digo Advpl . WSC&**''$ / '1 &.ptK Para.2Kpe =or FPA*ACJ1AC&E @ aCs< F1E Kuando da an+lise de parcmetros ( Messages ) a partir de um W928 , aso um Message n$o ten"a um tipo definido , O W928 considerado inv+lido , e o processo de gera$o abortado com a mensagem acima, identificando em
Curso de Introduo a Plataforma ADVPL/ASP WebService !'

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

X!A&AMQ0AM6Y o nome do Message incompleto , e em X0Y o elemento #nterno do arraT de Messages do gerador de c'digo Advpl . WSC&**''3 / *etorno 1WLLPA*AC inv#lido Kuando da montagem do c'digo fonte Advpl , a partir de um W928 , caso um parcmetro de retorno seja identificado como 0E8O ( 0E88!A&AM ) , O W928 considerado inv+lido , e o processo de gera$o abortado com a mensagem acima. WSC&**''( / '1 Para. 07 9FRE; unPnoB 6sta mensagem uma ocorrSncia interna de erro do gerador , n$o reproduzida at o momento. 6la poder+ ser reproduzida Iuando da an+lise do arraT interno de parcmetros , e este n$o conten"a uma defini$o de #O 2e estrutura v+lido . aso este erro se reproduza , entre em contato com XUUUY WSC&**'1' / 2Kpe FS2*WC2J2XP&E n5o contQ. De=ini45o AS2*WC201 Kuando da an+lise de estruturas pendentes a partir de um W928 , caso uma estrutura complexa n$o conten"a a especifica$o de seus elementos internos, e a mesma n$o conten"a nen"uma referSncia ao 9 F6MA ou a outra estrutura , o W928 considerado inv+lido , e o processo de gera$o abortado com a mensagem acima, identificando em X9:&E :Q:i!6Y o nome da estrutura incmpleta. WSC&**'11 / *etorno 1WLLPA*AC inv#lido ao W9 6&&443 WSC&**'1" / '1 Para. 07 9FRE; unPnoB W9 6&&445 /E #dSntico /E #dentico ao

WSC&**'1% / *eturnData n5o i.ple.entado @ FS7APJ2XP&E Kuando da gera$o das expresses de convers$o de valores de 9OA! para Advpl , caso um parametro 9OA! n$o seja suportado para convers$o , o processo de gera$o abortado com a mensagem acima, identificando em X9OA!Q:i!6Y o tipo do dado n$o suportado para convers$o . WSC&**'1! / 0nit2Kpe 1WLLPA*AC n5o i.ple.entado

Curso de Introduo a Plataforma ADVPL/ASP WebService

"(

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

6sta mensagem uma ocorrSncia interna de erro do gerador , n$o reproduzida at o momento. WSC&**'1) / 1ode MZc7b81a.eZM as MZc7b82KpeZM on S7AP *esponse not =ound ]]] OcorrSncia de erro de execu$o do lient , reproduzida Iuando do processamento de um pacote 9OA! retornado por um Web 96rvice cuja defini$o de trocas de dados 9OA! utilize o 9tTle V &! , e um node de retorno de um ArraT de 6struturas obrigat'rio definido no W928 n$o foi encontrado no pacote retornado. ]]] WSC&**'1, / *equisi45o D22PS n5o suportada 2urante a gera$o do codigo=fonte para lient Advpl a partir de uma defini$o de servio (W928) , podemos especificar um arIuivo na unidade de disco do servidor , ou uma definic$o W928 piblicada em um servidor W6D F::! . O !rotocolo F::!9 ainda n$o suportado para operaes com W6D 9ervices. WSC&**'1$ / *equisi45o D22P retornou 10L 2urante a gera$o do codigo=fonte para lient Advpl a partir de uma defini$o de servio (W928) , Iuando especificamos uma definic$o W928 piblicada em um servidor W6D F::! , caso o servidor n$o seja encontrado , o processo abortado com a mensagem acima. 1erifiIue se a a E&8 digitada est+ em formato v+lido , se existe entrada no 209 da sua conex$o de rede para resolver o #! do servidor especificado , e se o mesmo est+ em opera$o normal. WSC&**'13 / *equisi45o D22P retornou &CP2X 2urante a gera$o do codigo=fonte para lient Advpl a partir de uma defini$o de servio (W928) , Iuando especificamos uma definic$o W928 piblicada em um servidor W6D F::! , caso o servidor seja encojntado , porm n$o "aja nen"um tipo de retorno por parte do mesmo , o processo abortado com a mensagem acima. 1erifiIue se a E&8 est+ digitada corretamente e se o servidor est+ em opera$o normal. WSC&**'1( / Arquivo n5o encontrado 2urante a gera$o do codigo=fonte para lient Advpl a partir de uma defini$o de servio (W928) , Iuando especificamos uma definic$o W928 salva
Curso de Introduo a Plataforma ADVPL/ASP WebService "1

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

em um arIuivo na unidade de disco do 96rvidor , caso o arIuivo especificado n$o seja encontrado , o processo abortado com a mensagem acima. 1erifiIue se o arIuivo especificado est+ digitado em formato v+lido , e se o mesmo realmente existe. WSC&**'"' / ?al:a de Abertura do Arquivo / ?&**7* F?&**7*J1WCE 2urante a gera$o do codigo=fonte para lient Advpl a partir de uma defini$o de servio (W928) , Iuando especificamos uma definic$o W928 salva em um arIuivo na unidade de disco do 96rvidor , caso n$o seja possGvel a abertura do arIuivo para a leituda da definic$o , o processo abortado com a mensagem acima , identificando o c'digo A21!8 de -al"a de Abertura em X-6&&O&Q0EMY . 1erifiIue se o arIuivo especificado n$o est+ sendo utilizado por outro programa , e se o usu+rio Iue subiu o 9erver !rot"eus tSm direitos de acesso de rede ^ pastaZarIuivo especificada. WSC&**'"1 / F&R2*AJ01?7E WSDL Parsin< FPA*S&*J&**7*E 6sta ocorrSncia reproduzida no momento da gera$o de um codigo= fonte a partir de um W928 , caso este apresente alguma inconsistSncia , como um erro de sintaxe ou estrutura, em nGvel de documento UM8. aso reproduzida Ssta ocorrSncia , o W928 considerado inv+lido , e o processo de gera$o abortado com a mensagem acima , identificando em 6U:&AQ#0-O o \source\ do W928 , e em X!A&96&Q6&&O&Y maiores detal"es sobre a inconsistSncia detectada. WSC&**'"" / F&R2*AJ01?7E WSDL Parsin< FPA*S&*JWA*101+E 9imilar ^ ocorrSncia W9 6&&4<7 , esta ocorrSncia reproduzida no momento da gera$o de um codigo=fonte a partir de um W928 , caso este apresente alguma inconsistSncia em nGvel de documento UM8. aso reproduzida Ssta ocorrSncia , o W928 considerado inv+lido , e o processo de gera$o abortado com a mensagem acima , identificando em 6U:&AQ#0-O o \source\ do W928 , e em X!A&96&QWA&0#0;Y maiores informaes sobre a inconsistSncia detectada. WSC&**'"% / F&R2*AJ01?7E ?al:a ao 0.portar WSDL @ 2odos os par[.etros VA\07S 6sta ocorrSncia reproduzida no momento da gera$o de um codigo= fonte a partir de um W928 , caso este , ap's tratramento do !arser , n$o resulte
Curso de Introduo a Plataforma ADVPL/ASP WebService "

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

nen"um conteudo. 0este caso , o W928 considerado inv+lido , e o processo de gera$o abortado com a mensagem acima , identificando em 6U:&AQ#0-O o \source\ do W928 . WSC&**'"! / Cessa<e FC&SSA+&J1AC&E n5o encontrada 6sta ocorrSncia reproduzida no momento da gera$o de um codigo= fonte a partir de um W928 , Iuando especificado um parcmetro no D#02#0; do servio , porm o mesmo n$o foi declarado no Message do mesmo. 0este caso , o W928 considerado inv+lido , e o processo de gera$o abortado com a mensagem acima , identificando em M699A;6Q0AM6 o nome do parcmetro especificado no Dindings n$o encontrado. WSC&**'") / -indin< FS&*V0C&J-01D01+E n5o &ncontrado 6sta ocorrSncia reproduzida no momento da gera$o de um codigo= fonte a partir de um W928 , Iuando especificado um binding no servio , porm o mesmo n$o foi declarado na se$o Dindings do mesmo. 0este caso , o W928 considerado inv+lido , e o processo de gera$o abortado com a mensagem acima , identificando em 96&1# 6QD#02#0; nome do parcmetro especificado no 9ervio n$o encontrado. WSC&**'", / tar<et1a.espace n5o de=inido no WSDL Kuando da an+lise do "eader de um W928 , n$o for localizado o atributo Iue identifica o namespace default utilizado pelo W928 ( :arget0amespace ) , o W928 considerado inv+lido , e o processo de gera$o abortado com a mensagem acima . WSC&**'"$ / FS&*V0C&J1AC&E @ -indJ7peration n5o encontrada e. a-ind]F1E^ Kuando da an+lise da estrutura de um W928 , n$o for localizado uma opera$o definida do servio na se$o D#02#0;9 do mesmo , o W928 considerado inv+lido , e o processo de gera$o abortado com a mensagem acima , identificando o servico em X96&1# 6Q0AM6Y , e o elemento do arraT de controle interno de Dindings em X0Y WSC&**'"3 / Port2Kpe FP7*2J2XP&E n5o &ncontrado e. aPort Kuando da an+lise da estrutura de um W928 , n$o for localizado uma opera$o definida do servio na se$o !O&::i!6 do mesmo , o W928
Curso de Introduo a Plataforma ADVPL/ASP WebService "!

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

considerado inv+lido , e o processo de gera$o abortado com a mensagem acima , identificando o porttTpe n$o encontrado em X!O&:Q:i!6Y. WSC&**'"( / Port2Kpe FP7*2J2XP&E n5o contQ. opera4Tes Kuando da an+lise da estrutura de um W928 , for localizado o !O&::i!6 do servio , porm o mesmo n$o contiver a defini$o interna de parcmetros , o W928 considerado inv+lido , e o processo de gera$o abortado com a mensagem acima , identificando o porttTpe inconsistente em X!O&:Q:i!6Y. WSC&**'%' / Declaracao de estrutura pendente n5o suportada co. FS2*WC2J2XP&E Kuando do processamento de estruturas pendentes do W928 , em momento de gera$o de fonte , as estruturas pendentes devem ser estruturas tipo OM!86U:i!6. 0$o s$o suportados outros tipos neste ponto da rotina . 0este caso , o W928 considerado inv+lido , e o processo de gera$o abortado com a mensagem acima , identificando o tipo da estrutura em processamento no momento em X9:&E :Q:i!6Y WSC&**'%1 / 1a.eSpace inde=inido para FS2*WC2J1AC&E Kuando do processamento de estruturas pendentes , identificadas como sendo externas ^o W928 atual , especificadas por um #M!O&: ou &6- , caso a estrutura seja declarada sem o referido namespace , o W928 considerado inv+lido , e o processo de gera$o abortado com a mensagem acima , identificando a estrutura em X9:&E :Q0AM6Y WSC&**'%" / 9R; 1a.eSpace 9FSD7*2J1AC&SPAC&E; para 2Kpe FS2*WC2J2XP&E n5o encontrado Kuando do processamento de estruturas pendentes , identificadas como sendo externas ^o W928 atual , especificadas por um #M!O&: ou &6- , o namespace da mesma deve estar declarado no "eader do W928. aso ele n$o seja encontrado, o W928 considerado inv+lido , e o processo de gera$o abortado com a mensagem acima , identificando o alias do namespace em X9FO&:Q0AM69!A 6Y , e a estrutura em X9:&E :Q:i!6Y. WSC&**'%% / 0.port para 1a.eSpace FL71+JCA1&SPAC&E n5o encontrado

Curso de Introduo a Plataforma ADVPL/ASP WebService

""

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

omplementar ao erro W9 6&&4?< , este reproduzido Iuando o namespace idenfiicado para o parcmetro seja externo ao W928 , porm a E&8 para processamento do mesmo n$o seja especificada atravs de um X#M!O&:...Y no W928 . 0este caso , o W928 considerado inv+lido , e o processo de gera$o abortado com a mensagem acima , identificando o namespace em X8O0;Q0AM69!A 6Y . WSC&**'%! / Location VA\07 para 0.port do 1a.eSpace FL71+JCA1&SPAC&E omplementar ao erro W9 6&&4?? , este reproduzido Iuando a declara$o da E&8 C 8ocation do namespace externo n$o esteja declarado no X#M!O&:...Y no W928 . 0este caso , o W928 considerado inv+lido , e o processo de gera$o abortado com a mensagem acima , identificando o namespace em X8O0;Q0AM69!A 6Y . WSC&**'%) / De=ini45o a2Kpe para FS2*WC2J2XP&E n5o encontrada Kuando do processamento de estruturas pendentes , identificadas como sendo externas ^o W928 atual , especificadas por um #M!O&: ou &6- , o namespace da mesma identificado e importado , e todo o esIuema re= processado. 0o reprocessamento , caso o parcmetro pendente n$o seja encontrado , o W928 considerado inv+lido , e o processo de gera$o abortado com a mensagem acima , identificando a estrutura em X9:&E :Q:i!6Y. WS2,//%IJ / %I Param/ef n&o suportado : E/,5,/,92IAG from EPA/A3_9A3,G / ESK/.2K_9A3,G Kundo da valida$o de estruturas complexas , caso a mesma n$o possua tipo definido , e n$o seja uma referSncia externa ao W928 , ela deve ser uma referSncia ao pr'prio 9 F6MA. aso seja especificada IualIuer outro tipo de referSncia , o W928 considerado inv+lido , e o processo de gera$o abortado com a mensagem acima , identificando a referSncia em X&6-6&60 #AY , e os detal"es sobre o parametro C estrutura em X!A&AMQ0AM6Y C X9:&E :Q0AM6Y WS2,//%IL / ,strutura Interna Inesperada em (EPA/A3_9A3,G) Kuando da valida$o de estruturas complexas , caso a mesma ten"a passado por todas as interpretaes cabiveis de uma estrutura , e mesmo assim n$o foi possGvel identific+=la , o W928 considerado inv+lido , e o processo de
Curso de Introduo a Plataforma ADVPL/ASP WebService "#

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

gera$o abortado com a mensagem acima , identificando a estrutura em X!A&AMQ0AM6Y WSC&**'%3 / '" &.ptK Para.1a.e =or FPA*ACJ1AC&E a2Kpe]F11E^ ]F1"E^ Kuando da valida$o de estruturas complexas , caso a mesma ten"a passado por todas as interpretaes cabiveis de uma estrutura , porm seu nome n$o foi declarado , o W928 considerado inv+lido , e o processo de gera$o abortado com a mensagem acima , identificando a estrutura em X!A&AMQ0AM6Y WSC&**'%( / Wne>pected Du.p2Kpe F7-_J2XP&E Kuando da utiliza$o da fun$o UM82ata9et , para a interpreta$o de um objeto de retorno UM8 em formato 2ata9et , caso n$o seja passado um objeto Advpl de tipo v+lido ( Objeto UM8 ou ArraT ) , o processamento abortado , mostrando a mensagem acima , identificando o tipo de parcmetro recebido em XODHQ:i!6Y WSC&**'!' / Wne>pected SCD&CA 2Kpe F7-_J2XP&E Kuando da utiliza$o da fun$o UM82ata9c"ema , para determinar os dados recebidos por um retorno de um Web 9ervice Iue retorna uma referSncia ao 9c"ema , e n$o seja passado ^ fun$o um Objeto Advpl de :ipo 1+lido ( Objeto Uml ou ArraT ) , o processamento abortado , mostrando a mensagem acima , identificando o tipo de parcmetro recebido em XODHQ:i!6Y WSC&**'!1 / F17210LJC&SSA+&E 2urante a identifica$o do retorno de um Web 9ervice , caso algum parcmetro obrigatorio do servio n$o esteja presente no pacote de retorno , o processamento abortado com a mensagem acima , identificando em 0O:0#8QM699A;6 o parametro Iue n$o veio preenc"ido. WS2,//%M> / ./L Location n&o especificada. 0o momento de postar o pacote 9OA! de parcmetros para um Web 9ervice , verificada a propriedade reservada QE&8 do Objeto do 9ervio. aso a mesma esteja fora re=definida para 0#8 ou @A , o processamento abortado com a mensagem acima. Antes da postagem dos dados.
Curso de Introduo a Plataforma ADVPL/ASP WebService "$

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

WSC&**'!% / SoapStKle Descon:ecido @ I FS7APJS2XL&E 0o momento de enviar o pacote de parcmetros para um Web 9ervice , verificado o 9oap9tTle utilizado pelo servio . aso o mesmo n$o seja 2O EM60: ou &! , o processamento abortado com a mensagem acima, identificando o 9oap9tTle utilizado em X9OA!Q9:i86Y. WSC&**'!! / 15o =oi possvel P7S2 e. FW*LJL7CA2071E Apos montado o pacote de envio para a solicita$o de processamento do servio , o pacote enviado ^ url discriminada no servio. aso o 9ervidor de destino do pacote n$o seja localizado no 209 ou n$o esteja no ar ,o processamento abortado com a mensagem acima ,e a url de destino especifiacada em XE&8Q8O A:#O0Y WSC&**'!) / *etorno VA\07 de P7S2 e. FW*LJL7CA2071E Apos montado o pacote de envio para a solicita$o de processamento do servio , o pacote enviado ^ url discriminada no servio. aso o pacote seja enviado , porm o retorno do servidor seja um pacote 1azio , o processamento abortado com a mensagem acima ,e a url de destino especifiacada em XE&8Q8O A:#O0Y WS2,//%MJ / N3L Warnin# EPA/S,/_WA/9I9HG ( P1SK em E./L_L12AKI19G ) Apos montado e enviado o pacote de envio para a solicita$o de processamento do servio , o pacote 9OA! retornado analizado para a alimentacao dos parametros Advpl . aso o pacote retornado apresente alguma incionsistSncia em nivel de documento UM8 , o processamento abortado com a mensagem acima , identificando a inconsistSncia em X!A&96&QWA&0#0;Y e a url de destino especifiacada em XE&8Q8O A:#O0Y WS2,//%ML / N3L ,rror EPA/S,/_,//1/G ( P1SK em E./L_L12AKI19G ) Apos montado e enviado o pacote de envio para a solicita$o de processamento do servio , o pacote 9OA! retornado analizado para a alimentacao dos parametros Advpl . aso o pacote retornado apresente algum erro de sintaxe ou estrutura em nivel de documento UM8 , o processamento

Curso de Introduo a Plataforma ADVPL/ASP WebService

"%

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

abortado com a mensagem acima , identificando o erro em X!A&96&Q 6&&O& Y e a url de destino especifiacada em XE&8Q8O A:#O0Y WSC&**'!3 / S7AP ?AWL2 F?AWL2JC7D&E 9 P7S2 e. FW*LJL7CA2071E ; @ ]F?AWL2JS2*01+E^ Apos analizado o pacote 9OA! retornado do servio , caso o mesmo apresente uma ocorrSncia de fal"a do tipo 9OA!>-AE8: , o processamento abortado com a mensagem acima , identificando o soapQcode em -AE8:Q O26 , e a string contendo os detal"es da ocorrSncia gerada pelo 9erver em -AE8:Q9:&#0; , e a url de destino do pacote XE&8Q8O A:#O0Y WS2,//%MO / S1AP /,SP19S, (/P2) n&o encontrado. 2urante a analize do pacote 9OA! retornado do servio , caso o mesmo utilize um soap:Tpe V &! , e o node de resposta n$o seja encontrado no pacote , o processamento abortado com a mensagem acima . WS2,//%P% / S1AP /,SP19S, /,5 E/,5,/,92,_IDG (/P2) n&o encontrado. 2urante a analize do pacote 9OA! retornado do servio , caso o mesmo utilize um soap:Tpe V &! , e o node de resposta aponte para un outro node via referSncia , e este novo node n$o seja encontrado no pacote , o pacote considerado inv+lido e o processamento abortado com a mensagem acima , mostrando o identificador de referSncia nao encontrado em &6-6&60 6Q#2 WS2,//%P= / S1AP /,SP19S, /,K./9 (/P2) n&o encontrado. 2urante a analize do pacote 9OA! retornado do servio , caso o mesmo utilize um soap:Tpe V &! , e o node de resposta n$o aponte para nen"uma referSncia , o node de retorno est^ dentro do nivel de resposta . aso o node de retorno n$o seja encontrado neste nivel , o pacote de retorno considerado inv+lido , e o processamento abortado com a mensagem acima . WSC&**')" / &nu.eration ?A0L&D on FS2*WC2J2XP&E 2urante a montagem do pacote de envio de dados para a reIuisi$o de um processamento de um Web 9ervice , caso um parcmetro de um tipo simples contiver um @enumerationA , e for alimentado pelo client com um valor n$o constante na lista do 6numeration , o processamento abortado antes da

Curso de Introduo a Plataforma ADVPL/ASP WebService

"&

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

reIuisic$o ser realizada , com a mensagem acima , identificando o tipo da estrutura inv+lida em X9:&E :Q:i!6Y WS2,//%PI / WS/P2Het9ode (1bQect) not found. Kuando da analise do retorno de um processamento de um Web 9ervice , utilizando soap>stTle V &! , no momento de analise de um retorno de uma estrutura complexa , caso o node referente ^ mesma n^o seja localizado no pacote de retorno , o pacote de retorno considerado inv+lido , e o processamento abortado com a mensagem acima.

WSC&**')! / -indin< S7AP n5o localiSado no WSDL 2urante a gera$o do codigo=fonte para lient Advpl a partir de uma defini$o de servio (W928) , uma vez identificado o servio , o gerador de c'digo procura a declara$o dos D#02#0;9 no W928. 2entre os bindings encontrados , apenas s$o processados os bindings Iue transportam dados no formato 9OA! . aso nen"um binding do servio utilize 9OA! , o processo de gera$o do fonte client abortado , retornando esta ocorrSncia. WSC&**')) / 0nvalid PropertK 2Kpe 9F2XP&1E; =or FP*7P&*2XE 9 F2XP&"E ; Kuando da utiliza$o de uma classe client de um Web 9ervice em Advpl , as propriedades da classe devem ser alimentadas com os tipos Advpl apropriados. aso uma determinada propriedade do Objeto seja alimentada com um tipo n$o concordante com a declara$o do mtodo C estrutura , no nomento do pacote 9OA! ser montado , todas as propriedades usadas pelo mtodo s$o validadas antes do envio . aso alguma propriedade X!&O!6&:iY esteja alimentada com um tipo de dado Advpl X:i!67Y , porm o tipo esperado era X:i!6<Y , o processamento abortado com a ocorrjncia de erro acima. 7bserva45o @ 6sta valida$o est+ disponGvel a partir da vers$o A21!8 W928 lient 7.4?4,<? e superiores. 6m verses anteriores , ocorria um erro #nterno @:Tpe Mismatc"A ou @Argument 6rrorA dentro da fun$o W99oap1alue. WSC&**012 / F012&*1ALJ&**7*E

Curso de Introduo a Plataforma ADVPL/ASP WebService

"'

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

6sta ocorrSncia aponta um erro interno no engine de processamento do client Web 9ervices . aso esta ocorrSncia seja reproduzida , entre em contato com 2epartamento de :ecnologia da Microsiga 9oftJare 9CA.

Captulo 3 = Web Services e. ADVPL / S&*V&* #ntrodu$o


1isto de forma simples , um Web 9ervice uma classe Iue pode ser acessada via protocolo "ttp. 2e modo Iue , um programa de 9oftJare @clientA ir+ solicitar ao @serverA um processamento de uma a$o C mtodo do servio , enviando o(s) parcmetro(s) ao mesmo atravs de uma string UM8 , formatada no padr$o 9OA! (9imple Object Access !rotocol) , e o servio retornar+ ao client uma string UM8 de resposta , tambm formatada no padr$o 9OA!. 2iferentemente dos Web 9ites, Iue s$o apresentaes de dados feitas para serem vistas em um broJser por um internauta , um Web 9ervice construGdo para ser acessado diretamente por outro servio ou programa de 9oftJare. Os servios podem ser combinados entre si e com outras aplicaes para construir servios interativos e inteligentes. A universalidade de um Web 9ervice , entre outros fatores , reside justamente na maneira de disponibilizar uma espcie de @manualA do servio , c"amado de W928 ( Web 9ervices 2escription 8anguage ) , Iue nada mais do Iue uma descri$o detal"ada do servio , Iue capaz de resumir em um Mnico documento os mtodos de um servio , os parcmetros , retornos e detal"es do mesmo. Em documento W928 de tal forma completo Iue praticamente elimina
Curso de Introduo a Plataforma ADVPL/ASP WebService #(

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

a necessidade de IualIuer tipo de contato direto entre o desenvolvedor de um 9ervico (server) e o analista Iue ir+ montar um client para interagir com ele. :ambm foi idealizado o uso do protocolo F::! originalmente para a troca de pacotes de reIuisi$o e retorno de processamento pois a maioria dos sistemas operacionais tSm recursos para suport+=lo N e foi escol"ido o formato 9OA! por ser um padr$o aberto, criado pela Microsoft, Ariba e #DM para padronizar a transferSncia de dados em diversas aplicaes, Iue utiliza como veGculo o universalmente con"ecido UM8 ( 6xtended MarLEp 8anguage ) . 2er.os 2Qcnicos S7AP = 9igla de 9imple Objetc Access !rotocol, ou protocolo simples de acesso a objetos. O 9OA! um padr$o aberto, baseado em UM8, criado pela Microsoft, Ariba e #DM para padronizar a transferSncia de dados entre aplicaes. !ode ser usado em combina$o com v+rios outros protocolos comuns da #nternet, como F::! e 9M:!. WSDL = Web 9ervice 2escription 8anguage. 9ubmetida ^ W? = o 'rg$o padronizador da #nternet = . A linguagem W928 define regras baseadas em UM8 para descrever servios Jeb. W&- S&*V0C&S = programa completo ou componente de softJare residente num servidor Jeb. RCL = 9igla de 6xtensible MarLup 8anguage, o UM8 uma linguagem baseada em tags semel"ante ao F:M8. 9ua principal caracterGstica a extensibilidade. Kuem emite um documento UM8 pode criar tags personalizadas, Iue s$o explicadas num documento anexo, Iue tem extens$o U92. RSD = 9igla de UM8 9c"ema 2efinition. ArIuivo associado a um documento UM8 Iue descreve e valida aos dados no documento. Assim como as linguagens de programa$o, os U92s aceitam dados de diferentes tipos, como nMmeros, data e moeda.

2efini$o de um Web 9ervice B 96&16& em Advpl


#nicialmente veremos neste documento as atribuies e funcionalidades dos Web 9ervices direcionados ^ uma aplica$o 96&16& , e num momento
Curso de Introduo a Plataforma ADVPL/ASP WebService #1

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

posterior a funcionalidade de uma aplica$o 8#60: em detal"es . A cria$o de um Web 9ervice em Advpl consiste na montagem de uma classe Advpl especial , c"amada W996&1# 6 , onde cada mtodo da classe uma a$o do Web 9ervice. aber+ ^os fontes dessa classe o processamento de uma reIuisi$o e a gera$o do respectivo retorno , cabendo ent$o ^ 8ib de Web 9ervices do A!/ a camada de troca de dados , recep$o e tratamento do pacote 9OA! , as converses de dados cabGveis do UM8 para as propriedades de parcmetro da classe Advpl e a montagem do pacote 9OA! a partir das propriedades de retorno setadas pelo mtodo executado e retorn+=lo ao lient, alm de prover ^o client o documento W928 referente ^o servio compilado no &eposit'rio de Objetos Advpl . 6ste mtodo de programa$o em camadas permite encapsular on tratamentos internos , em se tratando de protocolo F::! , 9OA! e W928 , tornando relativamente f+cil a miss$o de criar um Web 9ervie utilizando=se do Advanved !rot"eus. Dasta escrever uma classe Iue receba um ou mais parcmetros e devolva um retorno , ambos tratados pelo fonte como um tipo de dado Advpl b+sicoN configurar o 9erver !rot"eus para "abilitar a interface F::! e os Web 9ervices , Iue a 8ib faz todo o resto.

2eclara$o de um Web 9ervice B 96&16& em Advpl


1ejamos abaixo um esboo contendo as instrues Advpl necess+rias para a declara$o de um Web 9ervice B 96&16& em Advpl . !ara a utiliza$o destes comandos , faz=se necess+ria a declara$o do arIuivo de "eader Advpl A!W6D9&1. F . W996&1# 6 X0omeQdoQ9ervicoY // Dec!ara &o do Servi o

W92A:A X0omeQ ampo7Y as PA&&Ai O-R X:ipoQdoQcampo7Y PO!:#O0A8R (... demais propriedades , parcmetros e retornos ... ) W9M6:FO2 X0omeQdoQMetodoY (... demais mtodos ...) 602W996&1# 6

Curso de Introduo a Plataforma ADVPL/ASP WebService

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

W99:&E : X0omeQdaQ6struturaY 6strututra(s) ( opcionais )

// Dec!ara &o da(s)

W92A:A X0omeQ ampo7Y as PA&&Ai O-R X:ipoQdoQcampo7Y PO!:#O0A8R ( ... demais campos da estrutura ... ) 602W99:&E : // 777 5ontes do(s) m'todo(s) dec!arado(s) no Servi o 777 W9M6:FO2 X MetodoY W9&6 6#16 X ampoQ#nYP, ampoQ#n<,...R W99602 X ampoQOutY ( ... !rocessamento do servio a partir dos parametros , e alimenta$o do retorno X0omeQcampoQoutY ... )

&egras para 0omenclatura dos 9ervios C 6struturas C 2ados e Mtodos 7. 0omenclatura dos 9ervios
X0omeQdoQservicoY 2eve ser iniciado por um caracter alfabtico , e deve conter apenas os caracteres alfabticos compreendidos entre A ... k , os caracteres numricos compreendidos entre 4 ... 5 , podendo tambm ser utilizado o caracter @QA (underline ) . Em servio n$o pode ter um nome de uma palavra reservada Advpl , e n$o pode ter o nome igual a um tipo b+sico de campo ( 9:&#0; , #0:6;6& , -8OA: , 2A:6 , DOO86A0 ) .

<. 0omenclatura de 6struturas


W99:&E : X0omeQdaQ6struturaY 6strututras ( opcionais ) CC 2eclara$o de

Curso de Introduo a Plataforma ADVPL/ASP WebService

#!

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

X0omeQdaQ6struturaY

Obedece ^s mesmas regras de nomenclatura de 9ervios , n$o podendo "aver uma estrutura com o mesmo nome de um servio declarado.

Ema estrutura um agrupamento de dados b+sicos, criado como uma classe especial (W99:&E :) em Advpl. !rocedemos com a cria$o de uma estrutura para um servio Iuanto temos a necessidade de definir Iue um conjunto de dados b+sicos pode ser agrupado em um tipo de informa$o Iue ser+ utilizada como parcmetro eCou retorno em um ou mais metodos do servio.

?. 0omenclatura de 2ados ( ampos )


W92A:A X0omeQ ampoY as PA&&Ai O-R X:ipoQcampoY PO!:#O0A8R X0omeQ ampoY Obedece ^s mesmas regras de nomenclatura de 9ervios , n$o podendo "aver um dado com o mesmo nome de um servio ou estrutura j+ declarados. aso especificado , indica Iue este dado poder+ ter mais de uma ocorrSncia , sendo tratado como um ArraT em Advpl . !ode ser um tipo b+sico de dado (9tring , 2ate , #nteger , -loat , Doolean ) , ou pode ser uma estrutura declarada . aso especificado , indica Iue a especifica$o deste dado nos pacotes de envio eCou retorno opcional.

PA&&Ai O-R

X:ipoQ ampoY

PO!:#O0A8R

``` *esti4Tes de uso da instru45o A**AX 7? > 0$o permitido o uso da instru$o A&&Ai O- Iuando declaramos dados utilizados para entrada de dados dentro da declara$o do servio. !ara tal , precisamos criar uma estrutura intermedi+ria para @encapsularA o arraT.

:ipos de 2ados D+sicos


Strin< 2ado Advpl do tipo 9tring.
#"

Curso de Introduo a Plataforma ADVPL/ASP WebService

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

Date 0nte<er ?loat

2ado Advpl do tipo 2ata. 2ado Advpl do :ipo numrico , apenas numeros inteiros. 2ado Advpl do :ipo numrico , pode conter numeros inteiros e n$o=inteiros. -oolean 2ado Advpl do :ipo Dooleano ( l'gico ) . -ase,!-inarK` 2ado Advpl do :ipo 9tring Din+ria , aceitando todos os aracteres da :abela A9 ## , de F&(4) a F&(<,,) ` A i.ple.enta45o do Ca.po -ase,!-inarK est# disponvel apenas a partir de reposit6rios <erados ap6s Car4o / "''% 9 A partir da vers5o ADVPL WSDL Server 1 '%'%', ; ``` Ca.pos 7bri<at6rios / 7pcionais @ !or default , um campo declarado sem a cl+usula O!:#0A8 , obrigat'rio . 9endo obrigat'rio , isto significa Iue o node ou tag 9OA! referente ao mesmo dever+ ser especificado no pacote UM8 B 9oap onde o campo for utilizado, seja ele um parcmetro ou retorno . 0o processamento de um servio , os dados enviados pelo client como parcmetro na reIuisi$o s$o lidos do pacote 9OA! e atribuidos ^s propriedades do mtodo do respectivo servio, e caso um dado n$o seja passado ao servio , atribuGdo ao mesmo o conteMdo 0#8. A partir da vers$o @A21!8 W928 9erver 7.4?474? DA , foi implementado o tratamento de excess$o no 9erver para gerar um 9oap -ault autom+tico , caso algum parametro obrigat'rio n$o seja recebido na solicita$o de processamento.

%. Mtodos ( Aes )
W9M6:FO2 XMetodoY W9&6 6#16 X poQ#nYP, poQ#n<,...R W99602 X poQOutY XMetodoY Obedece ^s mesmas regras de nomenclatura de 9ervios , n$o podendo "aver um servio ou estrutura declarados com o mesmo nome.

Ao declarar o mtodo , obrigatoriamente devemos especificar um ou mais campos declarados dentro do servio a serem utilizados para a entrada de dados , e apenas um campo para saGda de dados do mtodo . Os campos podem ser de tipos b+sicos ou estruturas. 2entro do mtodo , fazemos referSncias ^s propriedades da estrutura , segundo a nomenclatura de acesso ^ propriedades de objetos Advpl ( prefixo >> ) . aso desejemos declarar um servio Iue n$o reIuer nen"um parcmetro , devemos especificar Iue o mesmo recebe o parcmetro reservado 1WLLPA*AC .
Curso de Introduo a Plataforma ADVPL/ASP WebService ##

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

!ublicando um W6D 9ervice no !rot"eus = onfigura$o


Em Web9ervice em Advpl utiliza=se de WorLing :"reads (]]) para atender ^s solicitaes de processamento em um "ost "ttp , de modo Iue , para publicar e "abilitar um Web 9ervice em um servidor !rot"eus , devemos primeiramente "abilitar o servio de publicaes Jeb ( "ttp ) do !rot"eus , atravs da se$o P"ttpR do ArIuivo de #nicializa$o do 9ervidor ( Ap/9rv.ini ) . -eito isso , existem duas maneiras de "abilitar o Web9ervice > Atravs da cria$o da se$o PJebservicesR no ArIuivo de onfigura$o do 9erver , ou atravs da configura$o manual de um ambiente de WorLing :"reads 6xtended ( W6D6U ) , tambm no inicializador. A diferena entre ambas Iue a segunda opao permite especificar maiores detal"es do ambiente de execu$o do servio , permite a configura$o de servios e Web sites simultaneamente e multi= "osting . Kuando nos utilizamos do server F::! do !rot"eus apenas para Web 9ervices , utilizamos com grande efic+cia a configura$o atravs da se$o PJebservicesR PWeb9ervicesR 6nableV4 N #ndica se o service est+ "abilitado (7) ou n$o (4). 6nvironmentV601:69:6 N #ndica Iual environment do 9erver Iue ir+ atender ^s reIuisies onoutV7 N !ermite a exibi$o de informaes dos status internos do servio ( default V 4 > desabilitado ) :raceV7 N Fabilita a greva$o de um arIuivo de log ( Jsstrace.log ) , contendo as informaes sobre todas as c"amadas e status do Web 9ervice ( default V 4 ) !repare#nV47,47 N !ermite especificar Iual a empresa e filial do 6&! ser$o utilizados para a montagem do ambiente de processamento das reIuisies. 0ame9pace V "ttp>CClocal"ost N !ermite especificar o nome do namespace utilizado pelo servio ( default V "ost atualmente utilizado ) E&88ocation V "ttp>CClocal"ost N !ermite especificar a url respons+vel pelo atendimento has solicitaes de processamento do servio ( default V "ost atualmente utilizado ) !ara configurar o Web9ervice manualmente , devemos alm de "abilitar o server "ttp , devemos tambm configurar um Hob do tipo W6D6U , apontando para funcoes internas de processamento dos Web9ervices , configurar um "ost
Curso de Introduo a Plataforma ADVPL/ASP WebService #$

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

cujas reIuisioes de linLs apJ seram atendidas por este job. 1eja exemplo do job abaixo > P"ttpR N configura$o do servio "ttp 6nableV7 !ortV34 !at"Vc>ZAp/ZFttp Plocal"ostR N onfiguraao do "ost local &esponseHobVW9:69:6 PW9:69:6R N onfiguracao do job :i!6VW6D6U N :ipo do Hob para Web9ervices deve ser W6D6U O09:A&:VQQW99:A&: N configura$o fixa para Jebservices O0 O006 :VQQW9 O006 : N configura$o fixa para Jebservices 6nvironmentV601:69:6 N #ndica Iual environment do 9erver Iue ir+ atender ^s reIuisies #09:A0 69V<,, N #ndica Iual a Iuantidade minima (default ) e maxima de t"reads ( ambientes ) Iue ser$o colocados no ar para atender ^ solicitaes de processamento do servio publicado. onoutV7 N !ermite a exibi$o de informaes dos status internos do servio ( default V 4 > desabilitado ) :raceV7 N Fabilita a greva$o de um arIuivo de log ( Jsstrace.log ) , contendo as informaes sobre todas as c"amadas e status do Web 9ervice ( default V 4 ) !repare#nV47,47 N !ermite especificar Iual a empresa e filial do 6&! ser$o utilizados para a montagem do ambiente de processamento das reIuisies. 0ame9pace V "ttp>CClocal"ostC N !ermite especificar o nome do namespace utilizado pelo servio ( default V "ost atualmente utilizado ) E&88ocation V "ttp>CClocal"ostC N !ermite especificar a url respons+vel pelo atendimento has solicitaes de processamento do servio ( default V "ost atualmente utilizado )

Web 9ervices B !onto de 6ntrada W99:A&:


O ambiente de execu$o das :"reads dos Web 9ervices automaticamente monta um ambiente 6&! , utilizando a empresa e filial
Curso de Introduo a Plataforma ADVPL/ASP WebService #%

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."

especificadas no parametro !&6!A&6#0 na configura$o dos Web9ervices, Iuando informado o mesmo. aso seja necess+rio alguma inicializa$o especifica para as :"reads destinadas ao Web 9ervices , foi disponibilizado o !onto de 6ntrada W99:A&:(c6&!6mp,c6&!-il) . 1ale lembrar Iue , Iuando compilamos este ponto de entrada no reposit'rio de Objetos , cabe ^o ponto de entrada realizar a inicializa$o do ambiente, de modo Iue o parcmetro !&6!A&6#0 apenas ser+ lido , e seu conteMdo ser+ passado como parcmetro ao ponto de entrada. aso o ponto de entrada seja compilado , e n$o seja preenc"ido o parametro !&6!A&6#0 , o ponto de entrada receber+ a empresa eCou filial em branco (@A).

Curso de Introduo a Plataforma ADVPL/ASP WebService

#&

"Essa mensagem destinada exclusivamente ao seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional ou cuja divulgao seja proibida por lei. O uso no autori ado de tais informaes proibido e est sujeito !s penalidades cab"veis."