Você está na página 1de 140

Web Services com Protheus

Reviso: 27/04/2004 Abrangncia Verso 7.10 Verso 8.11

O Protheus, a partir da verso AP7, possui ferramentas nativas e integradas com a LIB de Infra-Estrutura do ERP, para desenvolvimento de aplicaes 'Cliente' e 'Server', utilizando a tecnologia dos Web Services. Para melhor compreenso do assunto, os tpicos relacionados a ambos foram didaticamente separados em Aplicaes Server e Aplicaes Cliente, respectivamente. Nos tpicos 'Comandos' e 'Funes', so abortadas respectivamente as diretivas e funes da Lib de Infra-estrutura do ERP disponibilizadas para o desenvolvimento de ambas as aplicaes, Cliente e Server. No tpico 'Exemplos Advpl', so demonstrados os exemplos 'atmicos' de uso das funes e comandos.

COMANDOS - ENDWSCLIENT
Reviso: 22/04/2004 Abrangncia Verso 7.10 Sintaxe ENDWSCLIENT [ self ] Parmetros Argumento self Descrio Atravs desta instruo, encerra-se a declarao de uma classe 'Client' de Web Services, iniciada com o statement WSCLIENT. Esta instruo de declarao utilizada exclusivamente quando da gerao de um fonte 'Cliente' de Web Services, atravs do assistente 'Gerar Cliente WebServices...' do IDE. Observao : A utilizao deste comando exige a declarao do #include 'APWEBSRV.CH' no fonte Advpl. Tipo Descrio (NULO) Esta instruo no recebe nenhum parmetro. Verso 8.11

COMANDOS - ENDWSSERVICE
Reviso: 22/04/2004 Abrangncia Verso 7.10 Sintaxe ENDWSSERVICE [ self ] Parmetros Argumento self Descrio Atravs desta instruo, encerra-se a declarao de uma classe 'Server' de Web Services, iniciada com o statement WSSERVICE. O no-fechamento da declarao da classe ocasiona "falha de compilao" no fonte. Observao : A utilizao deste comando exige a declarao do #include 'APWEBSRV.CH' no fonte Advpl. Tipo Descrio (NULO) Esta instruo no recebe nenhum parmetro. Verso 8.11

COMANDOS - ENDWSSTRUCT
Reviso: 22/04/2004 Abrangncia Verso 7.10 Sintaxe ENDWSSTRUCT [ self ] Parmetros Argumento self Descrio Atravs desta instruo, encerra-se a declarao de uma estrutura a ser utilizada em um Web Service, iniciada com o statement WSSTRUCT. O no-fechamento da declarao da estrutura ocasiona falha de compilao no fonte. Observao : A utilizao deste comando exige a declarao do #include 'APWEBSRV.CH' no fonte Advpl. Tipo Descrio (NULO) Esta instruo no recebe parmetros Verso 8.11

COMANDOS - WSCLIENT
Reviso: 22/04/2004 Abrangncia Verso 7.10 Sintaxe WSCLIENT cClientName Parmetros Argumento cClientName Descrio Atravs desta instruo, inicia-se a declarao uma classe 'Cliente' de Web Services em Advpl. Esta instruo de declarao utilizada exclusivamente quando da gerao de um fonte 'Cliente' de Web Services, atravs do assistente 'Gerar Cliente WebServices...', disponvel no Protheus IDE. Para encerrar a declarao da classe, utilizada a instruo ENDWSCLIENT. Observao : A utilizao deste comando exige a declarao do #include 'APWEBSRV.CH' no fonte Advpl. Tipo Descrio cClientName corresponde 'a classe do Web Service a ser Caracter gerada. Verso 8.11

COMANDOS - WSDATA
Reviso: 30/04/2004 Abrangncia Verso 7.10 Sintaxe WSDATA cVarNAme AS [ ARRAY OF ] cVarType [ OPTIONAL ] Parmetros Argumento cVarNAme AS ARRAY OF cVarType OPTIONAL Descrio Utiliza-se esta instruo para declarar uma propriedade de uma classe para WebServices, 'Cliente' ou 'Server'. Uma propriedade obrigatoriamente deve ter definida seu nome e tipo, e opcionalmente podemos definir que a mesma ter tratamento de array e/ou tratamento opcional. Observao : A utilizao deste comando exige a declarao do #include 'APWEBSRV.CH' no fonte Advpl. Tipo Descrio Caracter cVarName corresponde ao nome da propriedade a declarar. Caracter Separador para indicar o tipo da propriedade. cVarType corresponde a um Tipo Soap / compatvel de Caracter varivel a ser utilizado no servio. Veja os tipos suportados abaixo na Tabela A - Tipos de Dados cVarType corresponde a um Tipo Soap / compatvel de Caracter varivel a ser utilizado no servio. Veja os tipos suportados abaixo na Tabela A - Tipos de Dados Caso especificado , definimos que esta propriedade Caracter opcional no contexto do Web Service . Verso 8.11

COMANDOS - WSMETHOD
Reviso: 22/04/2004 Abrangncia Verso 7.10 Sintaxe WSMETHOD cMethodName [ WSRECEIVE <param_in,...> ] [ WSSEND <param_out> ] [ WSSERVICE <service_name> ] Parmetros Argumento cMethodName WSRECEIVE <param_in,...> WSSEND <param_out> WSSERVICE <service_name> Descrio Atravs desta instruo, incia-se a declarao de um mtodo de um Web Service 'Cliente' e/ou 'Server', em Advpl . Utilizamos esta instruo em dois momentos no desenvilvimento :

Tipo

Descrio cMethodName corresponde 'ao nome do mtodo do Web Caracter Service. Atravs desta instruo , declaramos quais so o(s) parametro(s) que este mtodo recebe, separados por Caracter vrgulas. Caso um mtodo no receba parmetros , devemos declarar que o mesmo recebe o parmetro reservado NULLPARAM. Atravs desta instruo , declaramos um e apenas um Caracter parmetro de retorno de um Web Service . cServiceName corresponde ao nome da classe do servio Caracter ao qual o mtodo atual pertence.

Na declarao da classe 'Server' e/ou 'Cliente' do servio. Na definio do fonte do mtodo 'propriamente dito', do respectivo WebService.

Ao utilizarmos a instruo WSMETHOD dentro da declarao de uma classe WSSERVICE, informamos apenas o primeiro parmetro ( cMethodName ) . Porm, ao declarar o fonte propriamente dito do mtodo, todos os parmetros desta instruo so obrigatrios. Observao : A utilizao deste comando exige a declarao do #include 'APWEBSRV.CH' no fonte Advpl.

COMANDOS - WSSERVICE
Reviso: 22/04/2004 Abrangncia Verso 7.10 Sintaxe WSSERVICE cServiceName [ DESCRIPTION <cDescr> ] [ NAMESPACE <cClsNS> ] Parmetros Argumento cServiceName Tipo Descrio cServiceName corresponde o nome do Servio ( Classe em Advpl ) que ser declarado / criado. A nomenclatura de Caracter um Web Service segue a regra de nomenclatura de funes Advpl . cDescr corresponde descrio do Servio, mostrada na tela de ndice de servios, e fornecida tambm jonto do Caracter WSDL gerado pelo servidor Protheus para o servio especificado. cClsNS corresponde o NameSpace sob o qual este servio Caracter deve ser publicado. Verso 8.11

DESCRIPTION <cDescr> NAMESPACE <cClsNS> Descrio

Atravs desta instruo, iniciamos a declarao uma classe 'Server' de WebServices em Advpl. Dentro da estrutura de uma Classe 'Server' de Web Services, devemos declarar os mtodos disponibilizados da classe, e declaramos todas as propriedades , parmetros e retornos utilizados por esta classe, devidamente especificadas, utilizando as instrues WSMETHOD e WSDATA, respectivamente. Para encerrar a declarao da classe, utilizamos a instruo ENDWSSERVICE.. A declarao de uma classe 'Server' de Web Services deve tr a seguinte estrutura bsica : WSSERVICE <cSvcName> DESCRIPTION <cDescr> NAMESPACE <cClsNS> WSDATA <xDataName> AS <xDataType> (... demais propriedades, parmetros e retornos ...)

WSMETHOD <MethodName> (... demais mtodos da classe ...) ENDWSSSERVICE (... fonte(s) do(s) mtodo(s)s desta classe ...) Observao : A utilizao deste comando exige a declarao do #include 'APWEBSRV.CH' no fonte Advpl.

COMANDOS - WSSTRUCT
Reviso: 22/04/2004 Abrangncia Verso 7.10 Sintaxe WSSTRUCT cSructName Parmetros Argumento cSructName Descrio Atravs desta instruo , iniciamos a declarao de uma estrutura , a ser utiilzada por um Web Service 'Server', em Advpl . Dentro de uma estrutura, devemos apenas declarar as propriedades que a mesma contm, atravs da instruo WSDATA. Devemos finalizar a declarao da estrutura utilizando o comando ENDWSSTRUCT. Observao : A utilizao deste comando exige a declarao do #include 'APWEBSRV.CH' no fonte Advpl. Tipo Descrio cStructName corresponde ao nome da estrutura a ser Caracter criada. Obedee 'as regras de nomenclatura de funes Advpl. Verso 8.11

Exemplo de uso da funo GETWSCERROR


Reviso: 22/04/2004 Abrangncia Verso 7.10 Verso 8.11

No exemplo abaixo, ilustrado o tratamento de erro sugerido para uma chamada de um mtodo atravs de um programa 'Client', desenvolvido em Advpl.
#include 'Protheus.ch' #include 'ApWebSrv.ch' User Function TstService Local oService , cSvcError , cSoapFCode ,cSoapFDescr // Cria uma instncia do servio Cliente oService := WSTeste():New() // Realiza a chamada do mtodo Hello() do servio. If oService:Hello() // Mtodo executado com sucesso. MsgStop('Execuo OK') Else // Caso o mtodo retorne .F. , devemos identificar e tratar a ocorrncia cSvcError := GetWSCError() cSoapFCode := GetWSCError(2) cSoapFDescr := GetWSCError(3) // Resumo do erro // Soap Fault Code // Soap Fault Description

If !empty(cSoapFCode) // Caso a ocorrncia de erro esteja com o fault_code preenchido , // a mesma teve relao com a chamada do servio . MsgStop(cSoapFDescr,cSoapFCode) Else // Caso a ocorrncia no tenha o soap_code preenchido // Ela est relacionada a uma outra falha , // provavelmente local ou interna. MsgStop(cSvcError,'FALHA INTERNA DE EXECUCAO DO SERVIO') Endif Endif oService := NIL

Return

Exemplo de uso da funo GETWSCVER


Reviso: 22/04/2004 Abrangncia Verso 7.10 Verso 8.11

No exemplo abaixo , obtemos a verso da Lib 'Cliente' de Web Services compilada no repositrio atual.
User Function ShowVersions() Local cCliVers := GetWSCVer() MsgStop(cCliVers) Return

Exemplo de uso da funo GETWSSVER


Reviso: 22/04/2004 Abrangncia Verso 7.10 Verso 8.11

No exemplo abaixo , obtemos a verso da Lib 'Server' de Web Services compilada no repositrio atual.
User Function ShowVersion() Local cSrvVers := GETWSSVER() MsgStop(cSrvVers) Return

Exemplo de uso da funo SETSOAPFAULT


Reviso: 30/04/2004 Abrangncia Verso 7.10 Verso 8.11

No exemplo 01, partindo de um mtodo de um WebServices 'Server', caso um parmetro no atenda a faixa de dados necessria, o servio retorna ao Client solicitante um Soap-Fault, indicando a ocorrncia de erro. No exemplo 02, retornamos um Soap-Fault, indicando que no estava disponvel um recurso no servidor para o processamento requisitado. Neste, retornamos que o Fault Code 'SOAPFAULT_RECEIVER', pois o pacote no foi processado no por ter algum contedo invlido, mas sim por alguma razo ligada o ambiente do servidor. Por default, o Fault-Code de um Soap-Fault 'SOAPFAULT_SENDER', o que indica que o servio no foi processado por alguma razo ligada o pacote de dados enviados; e indica ao client que o pacote deve ser re-montado para que o servio seja executado.

Exemplo 01 (...) If ::Indice > 1024 SetSoapFault('Argumento Invlido','O ndice no pode ser maior que 1024.') Return .f. Endif (...) Exemplo 02 (...) If !File('\extras\modelo.cfg') SetSoapFault('Servio Indisponvel','',SOAPFAULT_RECEIVER) Return .f. Endif (...)

Funes GETWSCERROR
Reviso: 22/04/2004 Abrangncia Verso 7.10 Sintaxe GETWSCERROR ( [ nInfo ] ) --> xErrorInfo Parmetros Argumento Tipo Descrio nInfo especifica qual informao pertinente ao erro deve ser retornada, podendo ser :

nInfo

1 - Retorna uma String contendo o Resumo do Erro COMPLETO (DEFAULT) 2 = Retorna uma String contendo o soap:fault_code , caso Numrico disponvel . 3 = Retorna uma String contendo o soap:fault_String , caso disponvel . 4 = Retorna um Objeto XML contendo os nodes completos com as informaes do erro , apenas caso o erro seja um soap_Fault.

Retorno Tipo (Qualquer) Descrio Utilizada no desenvolvimento de uma aplicao 'Client' de WebServices, atravs desta funo possvel recuperar as informaes pertinentes uma ocorrncia de erro de processamento de um mtodo 'Client', aps a execuo do mesmo. Caso a execuo de um mtodo 'Client' de Web Services retorne .F., deve ser utilizada a funo GetWSCError(), para identificar a origem da ocorrncia. Durante uma operao de execuo de um mtodo 'Client' de WebServices, so possveis ocorrncias de erro das seguintes naturezas, em momentos especficos : Descrio Retorna a informao do erro solicitada atravs do parmetro nInfo . Caso nInfo seja 1 , 2 ou 3 , o retorno do tipo String . Caso seja tipo 4 , ser retornado um Objeto XML.

1 - Antes do pacote 'SOAP',com os parmetros e dados pertinentes requisio, ser enviado. Durante a montagem do pacote SOAP, para envio dos parmetros do mtodo solicitado o servidor, realizada uma consistncia do(s) parmetro(s) a serem enviados, tais como a obrigatoriedade do parmetro e o tipo Advpl com o qual o parmetro foi alimentado. Se e somente se os parmetros informados sejam vlidos, o pacote SOAP montado postado no servidor de WebServices. 2 - Ao postar o pacote 'SOAP' para o respectivo WebService Ao postar o pacote, caso o host do Web Service utilizado ou o servidor referente o mesmo no foi localizado ou no esteja no ar. 3 - Aps o envio do pacote e obteno do devido retorno do Server. Uma vez enviado ao Server, a interface client entra em modo 'stand-by', aguardando por um pacote de retorno SOAP do Server. Aps a portagem, caso o pacote devolvido no esteja em conformidade com a declarao do servio, ou o servidor devolveu um html ao invs de um xml 'SOAP'. 4 - Erro Interno de execuo : Qualquer ocorrncia de erro fatal, seja antes ou depois do envio da requisio, cuja origem no seja tratada ou prevista pelas rotinas 'Client' do Servio, como por exemplo um retorno de um pacote XML com erro de sintaxe ou estruturalmente invlido .

Funes GETWSCVER
Reviso: 22/04/2004 Abrangncia Verso 7.10 Sintaxe GETWSCVER ( ) --> cVersion Retorno Tipo Caracter Descrio Utilizada no desenvolvimento de uma aplicao 'Cliente' de Web Services , atravs desta funo possvel obter a string contendo a indentificao da verso de Build da LIB de Infra-Estrutura do Web Services 'Cliente'. Descrio cVersion corresponde verso do Build da Lib 'Cliente' de WebServices, copmpilada no repositrio em uso atualmente. Verso 8.11

Funes GETWSSVER
Reviso: 22/04/2004 Abrangncia Verso 7.10 Sintaxe GETWSSVER ( ) --> cVersion Retorno Tipo Caracter Descrio Utilizada no desenvolvimento de uma aplicao 'Server' de Web Services , atravs desta funo possvel obter a string contendo a indentificao da verso de Build da LIB de Infra-Estrutura do Web Services 'Server'. Descrio cVersion corresponde verso do Build da Lib 'Server' de WebServices, compilada no repositrio em uso atualmente. Verso 8.11

Funes SETSOAPFAULT
Reviso: 30/04/2004 Abrangncia Verso 7.10 Sintaxe SETSOAPFAULT ( < cError > , < cString > , [ nFCode ] , [ cFactor ] , [ cFDetail ] ) --> .T. Parmetros Argumento cError Tipo Descrio Atravs de cError deve ser especificada uma descrio Caracter reduzida , referindo-se ao tipo do erro , por exemplo : Erro de argumento , Parametro Invalido , Falha de Arquivo ,... Em cString deve-se especificar um detalhe maior da ocorrncia , no exatamente um detalhe tcnico , porm Caracter uma especificao objetiva da ocorrncia. Por exemplo : Parametro XXXXX fora da faixa vlida de dados , compreendida entre mmm e nnn , ... Fault Code : Atravs deste parametro , possvel especificar a origem da ocorrncia da Soap Fault . Segundo a documentao do SOAP, Verso 1.2 Numrico ( publicada na W3C ) , foram definidos 6 cdigos de ocorrncias standard de erro , detalhados na Tabela A. Caso no seja especificado , por default assumido o cdigo 5 ( Sender ) Atravs de CFActor , possvel especificar explicitamente qual node / atributo do XML / Soap que no foi processado e/ou ocasionou a falha . Deve ser utilizado o Caracter formato anyURI ( ref namespace http://www.w3.org/2001/XMLSchema ) para especifcar o node / atributo que ocasionou a falha. Atravs de cFDetail , possvel especificar para fins internos de processamento maiores detalhes sobre uma Caracter ocorrncia de erro, especificamente relacionada o processamento do corpo ("body") de um pacote SOAP. Verso 8.11

cString

nFCode

cFactor

cFDetail

Retorno Tipo Lgico Descrio Esta funo sempre retorna .T. (true)

Descrio Utilizada no desenvolvimento de uma aplicao 'Server' de WebServices, atravs desta funo possvel setar uma ocorrncia de erro tratada, referente execuo do servio, ou impossibilidade de execuo do mtodo durante a execuo do mesmo. Dentre as razes pelas quais este tratamento utilizado, podemos citar ocorrncias relacionadas a validade dos dados, recebidos no pacote de parametros enviados pelo 'Cliente', como parmetros invalidos ou fora da faixa de dados permitida pela rotina, ou ocorrncias relacionadas ao 'Server', como a falta de um determinado recurso no server para o processamento, como uma falha de acesso a base de dados, ou qualquer outra razo implementada no servio. Tabela A - FAULT CODES nFCode Constante 1 SOAPFAULT_VERSIONMISMATCH 2 Descrio NameSpace invlido encontrado no processamento do Soap:Body SOAPFAULT_MUSTUNDERSTAND Refere-se a falha de interpretao de um node / atributo contido no Soap:Header, especificado com o atributo mustUnderstand setado para 'true' SOAPFAULT_DTDNOTSUPPORTED A String Soap enviada como parmetro continha um DTD (Document Type Definition). SOAPFAULT_DATAENCODINGUNKNOWN O HEader ou o Body do pacote SOAP est utilizando um encoding-type no suportado pelo server. SOAPFAULT_SENDER Refere-se a uma ocorrncia de erro e/ou falha de processamento da aao, por algum tipo de inconsistncia relacionada a falta de um ou mais dados necessrios ao processamento. Indica uma ocorrncia que requer que o pacote SOAP seja remontado para que seja realizada uma nova tentativa de acesso. SOAPFAULT_RECEIVER Refere-se a uma ocorrncia de erro e/ou falha de processamento por razes que no esto especificamente relacionadas ao conteudo do

3 4

pacote SOAp e/ou parametros recebidos, porm relacionados 'a uma falha no Receptor do Servio, como por exemplo o servidor estar bloqueado para manuteno. Este tipo de ocorrncia no indica que existe falha no pacote enviado, mas cosuma-se utilizar para indicar uma ocorrncia relacionada naquele instante de tempo ; possivelmente estando disponvel posteriormente .

Observao : Para utilizarmos os mnemnicos, ao invs dos nmeros, nos codigos de erro, precisamos declarar no fonte Advpl a utilizao do Include 'ApWebSrv.ch'

Funes SOAPDTGETD
Reviso: 22/04/2004 Abrangncia Verso 8.11 Sintaxe SOAPDTGETD ( < cDateTime > ) --> dDate Parmetros Argumento cDateTime Retorno Tipo Data Descrio A partir de uma string Advpl, contendo uma data no formato 'soap' DateTime, a funo SoapDtGetD() retorna a data correspondente em Advpl, como um contedo do tipo 'D' Date. Descrio Retorna a data identificada na String cDateTime Tipo Descrio Caracter String, no formato "Soap" DateTime, a ser considerada.

Funes SOAPDTGETT
Reviso: 22/04/2004 Abrangncia Verso 8.11 Sintaxe SOAPDTGETT ( < cDateTmie > ) --> cTime Parmetros Argumento cDateTmie Retorno Tipo Caracter Descrio A partir de uma string Advpl, contendo uma data no formato 'soap' DateTime, a funo SoapDtGetD() retorna o horrio correspondente em Advpl, como um contedo do tipo 'C' Character, no formato HH:MM:SS Descrio Retorna o horrio identificado, no formato HH:MM:SS Tipo Descrio Caracter String, no formato "Soap" DateTime, a ser considerada.

Funes SOAPDTMOUNT
Reviso: 22/04/2004 Abrangncia Verso 8.11 Sintaxe SOAPDTMOUNT ( < dData > , < cTmie > ) --> cDateTmie Parmetros Argumento dData cTmie Retorno Tipo Caracter Descrio A partir de uma Data em Advpl , e um horrio, especificado como string, a funo SoapDtMount() retorna a data e horrio especificados como uma string, no formato 'Soap' DateTime. Descrio String 'SOAP', correspondendo Data e Horrios especificados, no formato DATETIME. Tipo Data Descrio Data a ser considerada para a montagem do 'DateTime' Horrio, no formato hh:mm:ss, a ser considerado, para a Caracter montagem do 'DateTime'

Funes WSCLASSNEW
Reviso: 27/04/2004 Abrangncia Verso 7.10 Sintaxe WSCLASSNEW ( < cSrvStruct > ) --> oNewStruct Parmetros Argumento cSrvStruct Retorno Tipo Objeto Descrio Atravs da funo WSClassNew(), possvel criar uma nova instncia de uma estrutura (WSSTRUCT) de WebServices, criada para ser utilizada como uma estrutura 'Server'. A utilizao desta instuo, para criar instmcias de uma estrutura usada numa aplicao 'Server' de WebServices em AdvPl, evida a necessidade de criao de um mtodo 'NEW' para cada estrutura. Observao : Embora seja possvel, no se deve utilizar esta instruo para inicializar uma estrutura criada em um fonte 'Client' em Advpl; pois as estruturas client possuem as definies do mtodo NEW() de cada uma, com as devidas inicializaes de parmetros inetrentes ao servio. Descrio A funo retorna uma referncia uma nova instncia da estrutura passada como parmetro. Caso a estrutura no exista, a funo retornar NIL. Tipo Descrio Especifique o nome da estrutura "Server" de Webservices Caracter para a criao do Objeto. Verso 8.11

Funes WSDLDBGLEVEL
Reviso: 22/04/2004 Abrangncia Verso 7.10 Sintaxe WSDLDBGLEVEL ( < nLevel > ) --> NIL Parmetros Argumento Tipo Descrio Atravs de nLevel , definimos qual o nvel de informaes a ser mostrado : 0 (default ) = sem informaes adicionais , 1 = Apenas pacote de retorno e 2 = Numrico Informaes e pacote de Envio e Retorno . Obs: Devemos chamar esta funao apos inicializado o Objeto 'Cliente' do Web Service. Verso 8.11

nLevel

Retorno Tipo (NULO) Descrio Utilizada para depurao de uma aplicao 'Cliente' de Web Services em Advpl . Atravs desta funo, possvel setar, em tempo de execuo, um 'echo' de informaes adicionais pertinentes execuo de um mtodo 'Client' de Web Services , a ser mostrado no console do servidor Protheus ( caso habilitado ) , permitindo ainda parametrizar um nvel de detalhamento das informaes a serem mostradas. Observaes

Descrio Esta funo sempre retorna NIL

O valor informado na chamada desta funo, ser mantido e considerado por todos os mtodos de servios 'Client' em Advpl, executados a partir de ento nesta Thread, at que a aplicao seja finalizada, ou esta funo seja chamada novamente. Esta funo deve ser utilizada nica e exclusivamente para fins de depurao, pois a mesma onera a performance da aplicao 'Client'.

Aplicaes 'Server' em Advpl


Reviso: 22/04/2004 Abrangncia Verso 7.10 Verso 8.11

Neste tpico, e posteriores documentos, so detalhadas as atribuies e funcionalidades de uma aplicao 'Server' de Web Services, utilizando o Protheus, desde a criao da aplicao at as configuraes necessrias para a publicao do Web Service. A criao de um 'Server' de Web Services em Advpl consiste na montagem de uma classe Advpl especial, chamada WSSERVICE, onde cada mtodo da classe uma ao do Web Service. Caber aos fontes desta classe o processamento de uma requisio e a gerao do respectivo retorno, cabendo ento Lib de Web Services da Infra-Estrutura do ERP a camada de troca de dados, recepo, pr-validao e tratamento do pacote SOAP, as converses de dados cabveis do XML para as propriedades de parmetro da classe Advpl e a montagem do pacote SOAP a partir das propriedades de retorno setadas pelo mtodo executado e retorn-lo ao 'Client' solicitante do proessamento, alm de prover o 'Cliente' o documento WSDL referente (s) classe(s) 'Server' compilada(s) no repositrio de objetos em uso e configurado para atender s requisies de processamento. Este mtodo de programao em camadas permite encapsular on tratamentos internos, em se tratando de protocolo HTTP, SOAP e WSDL, tornando relativamente fcil a misso de criar um Web Servie 'Server' utilizando-se do Protheus. Basta escrever uma classe que receba nenhum, um ou mais que um parmetro e devolva obrigatoriamente um retorno; configurar o Protheus Server para habilitar a interface HTTP e os Web Services, que a Lib faz todo o resto.

01. WebServices 'Server' - Configurao


Reviso: 27/04/2004 Abrangncia Verso 7.10 Verso 8.11

O Servidor Protheus como 'SERVER' de WebServices Um WebService em Advpl utiliza-se de Working Threads (**) para atender as solicitaes de processamento atravs do protocolo HTTP. Existem duas maneiras de habilitar o WebService : Atravs da criao da seo [WEBSERVICES] no arquivo de configurao do servidor, ou atravs da configurao manual de um ambiente de Working Threads Extended ( WEBEX ), tambm no inicializador. A diferena entre ambas que a segunda opo permite especificar maiores detalhes do ambiente de execuo do servio, permite a configurao de servios e Web Sites simultaneamente, e tambm atendimento diferenciado de processamento para mais de um host e diretrios virtuais. Quando utilizamos o Protheus 8, devemos utilizar o novo assistente de configurao do servidor Protheus MP8WIZARD, para instalar e configurar o mdulo de WebServices. Segue abaixo um exemplo documentado de como configurar o servidor Protheus para WebServices, utilizando a chave [WEBSERVICES]. Observao : Esta configurao exige que a seo HTTP no esteja configurada no servidor Protheus. Esta configurao ir internamente habilitar o servio de HTTP e configurar o processo de resposta para WebServices. [WEBSERVICES] Enable=1 ; ( Obrigatrio ) Indica se o service est habilitado (1) ou no (0). Environment=ENVTESTE ; ( Obrigatrio ) Indica qual environment do Server que ir atender as requisies Conout=0 ; ( Opcional ) Permite a exibio de informaes dos status internos do servio ( default = 0 : desabilitado ) . Utilizado APENAS para depurao, em casos especficos, pois prejudica significativamente a performance do(s) servio(s). Trace=0 ; ( Opcional ) Habilita a gravao de um arquivo de log ( wsstrace.log ), contendo as informaes sobre todas as chamadas e status do Web Service ( default = 0) PrepareIn=01,01 ; (Obrigatrio) Permite especificar qual a empresa e filial do ERP sero utilizados para a montagem do ambiente de processamento das requisies. NameSpace = http://localhost ; ( Opcional ) Permite especificar o nome do namespace 'default', utilizado pelo(s) servio(s) compilado(s) sem a definio de 'NameSpace'. ( default = host atualmente utilizado ) URLLocation = http://localhost ; ( Opcional ) Permite especificar a url

responsvel pelo atendimento s solicitaes de processamento do(s) servio(s) ( default = host atualmente utilizado ) Para configurar o WebService manualmente, deve ser inicialmente habilitado o servio de HTTP do servidor Protheus, configurar um processo WEBEX, apontando para funes internas de processamento dos Web Services, e configurar um host atravs do qual as requisioes processamento sero atendidas. Veja no exemplo abaixo : [HTTP] ;; Configurao do protocolo HTTP Enable=1 Port=80 Path=c:\Ap7\Http [localhost] ;; A ttulo de exemplo, configuramos o host da estao local. Defaultpage=wsindex.apw ResponseJob=WSTESTE [WSTESTE] ; Configuracao do job para atender os WebServices TYPE=WEBEX ;; ( Obrigatrio ) Tipo do Job para Web Services deve ser WEBEX ONSTART=__WSSTART ;; ( Obrigatrio ) configurao fixa para Web Services ONCONNECT=__WSCONNECT ;; ( Obrigatrio ) configurao fixa para Web Services Environment=ENVTESTE ;; Especifique qual ambiente (environment)do servidor Protheus que ir atender os WebServices. INSTANCES=2,5 ;; ( Obrigatrio ) Indica qual a quantidade minima (default ) e mxima de processos ( Threads ) que sero colocados na memria para atender s solicitaes de processamento do(s) servio(s) publicado(s). Conout=0 ;; ( Opcional ) Permite a exibio de informaes dos status internos do servio ( default = 0 : desabilitado ) . Utilizado APENAS para depurao, em casos especficos, pois prejudica significativamente a performance do(s) servio(s). Trace=1 ;; (Opcional) Habilita a grevao de um arquivo de log ( wsstrace.log ), contendo as informaes sobre todas as chamadas e status do Web Service ( default = 0) PrepareIn=01,01 ; (Obrigatrio) Permite especificar qual a empresa e filial do ERP sero utilizados para a montagem do ambiente de processamento das requisies. NameSpace = http://localhost/ ;; ( Opcional ) Permite especificar o nome do namespace 'default', utilizado pelo(s) servio(s) compilado(s) sem a definio de 'NameSpace'. ( default = host atualmente utilizado ) URLLocation = http://localhost/ ;; ( Opcional ) Permite especificar a url responsvel pelo atendimento s solicitaes de processamento do(s) servio(s) ( default = host atualmente utilizado ) WSINDEX - ndice de Servios Uma vez habilitada a configurao para Web Services, obtemos o acesso a uma interface HTTP de consulta ao ndice de servios publicados. Para tal, basta re-iniciar o servidor Protheus aps a configurao ser realizada, abrir um Web Browser ( por exemplo, o Internet Explorer ), e acessar o link http://<servidor>/wsindex.apw . No caso

do exemplo de configurao acima, basta digitarmos http://localhost/wsindex.apw , e nos ser apresentada a interface de consulta o ndice dos servios. Por exemplo, caso o host configuradi para os wehservices fio o host local (localhost) , devemos acessar o link http://localhost/wsindex.apw . Utilizando o Protheus8, ser mostrada uma tela semelhante vista abaixo:

Nesta interface so mostrados todos os servios compilados e disponibilizados no reopsitrio de objetos em uso no ambiente configurado. Atravs dela, possvel obter maiores detalhes sobre cada um dos servios compilados. Cada servio ativo um link para uma pgina, onde so mostrados todos os mtodos do servio, e onde apresentado tambm um link atravs do qual o servidor Protheus fornecer a descrio do servio (WSDL). Logo abaixo mostrado o exemplo da tela de detalhes do servio CFGTABLE.

O Link para a obteno do WSDL encontra-se acima em 'CFGTABLE.apw?WSDL'. Basta clicar neste link , que uma nova janela do Browser ser aberta, mostrando o documento WSDL deste servio. Cada mtodo do servio disponibilizado tambm um link, para uma pgina onde so mostrados os exemplos de pacotes SOAP que este mtodo especificamente espera para recepo de parmetros, e o modelo do pacote de retorno do servio. Caso o fonte-Client Advpl deste servio seja gerado e esteja compilado no repositrio atual, a inteface de consulta habilita a funcionalidade de teste do WebService, atravs da interface http, mostrando no final da tela o boto "testar". Ao clicar neste, montada uma tela em HTML para que os parmetros do servio sejam preenchidos. Aps os parmetros preenchidos e submetidos, o pacote de retorno do servio e seu respectivo status retornado no Browse.

02. Criando um WebService 'Server' com o Protheus


Reviso: 23/04/2004 Abrangncia Verso 7.10 Verso 8.11

Para criarmos um WebService 'Server' utilizando o Protheus, primeiro devevemos habilitar o servidor Protheus como servidor de WebServices. Para tal, veja o documento 'configurando o servidor Protheus para WebServices. ' Uma vez configurado e habilitado os WebServices no servidor Protheus, deve ser inicialmente determinados os mtodos aos quais o servio se destina; para ento determinar os parmetros e retorno de cada mtodo. Uma vez determinadas estas informaes, deve ser codificada uma classe especial em Advpl , chamada WSSERVICE, que constituir o servio propriamente dito. Porm, antes de partir para a codificao, fortemente recomendado que sejam lidos os documentos deste tpico, onde so abortados em detalhes a infra-estrutura envolvida com os WebServices, seu funcionamento e as particularidades de comportamento da classe de WebServices.

03. Regras para codificao de um WebService


Reviso: 30/04/2004 Abrangncia Verso 7.10 Viso Geral Para a codificao de um webservice, foram criadas em Advpl instrues especiais de declarao de classe, especficas para WebServices, que suportam nomes 'longos' no nome da classe, mtodos e propriedades. A utilizao destes comandos exige a declarao do #include 'apwebsrv.ch' no topo do cdigo-fonte; e exige tambm a ateno em alguns pontos e particularidades, a iniciar pela nomenclatura do servio, estruturas, mtodos e propriedades. Caractersticas operacionais do ambiente Devemos estar atentos ao desenvolver os mtodos de WebServices, devido s caracteristicas operacionais do ambiente de 'Working Threads' utilizado pelo Web Services. Ao executar um mtodo do WebServices, o ambiente ser mantido no ar, aguardando uma nova requisio de processamento, de qualquer servio ou mtodo, e de qualquer cliente. De modo que, ao desenvolver um servio, no devemos deixar abertos as "Querys" utilizadas no mtodo, filtros setados em tabelas principais, eu configuraes especficas no-padro do ambiente, realizadas para o processamento de um mtodo especfico; pois isto pode causar impacto no funcionamento de todos os WebServices compilados e ativos neste servidor, com efeitos imprevisveis. Nomenclatura dos Servios O nome de uma classe para WebServices, deve ser iniciado por um caractere alfabtico, e deve conter apenas os caracteres alfabticos compreendidos entre A e Z, os caracteres numricos compreendidos entre 0 e 9, podendo tambm ser utilizado o caracter _ (underline ) . Um servio no pode ter um nome de uma palavra reservada Advpl, e no pode ter o nome igual a um tipo bsico de informao. Nomenclatura de Estruturas O nome dado uma estrutura obedece as mesmas regras de nomenclatura de Servios; no podendo haver uma estrutura com o mesmo nome de um servio declarado. Devemos estar atentos tambm o fato de uma estrutura no estar diretamente ligada o servio em questo, de modo que no podemos compilar duas estruturas de mesmo nome no mesmo repositrio. Verso 8.11

Uma estrutura contitui um agrupamento de dados, criado como uma classe especial (WSSTRUCT) em Advpl. Devemos criar de uma estrutura para um servio, quando necessrio agrupar um conjunto de dados bsicos e/ou outras estruturas em um nivo tipo de informao, que ser utilizada como parmetro e/ou retorno em um ou mais mtodos do servio. Nomenclatura das propriedades - parmetros e retorno Cada parmetro e retorno de todos os mtodos de um servio devem ser declarados como uma propriedade da classe do Servio. Para dar nome a estes, so vlidas as mesmas regras de nomenclatura de Servios, no podendo haver um dado com o mesmo nome de um servio ou estrutura j declarados anteriormente.

04. Tipos Bsicos de Dados - 'Server'


Reviso: 23/04/2004 Abrangncia Verso 7.10 Verso 8.11

Quando escrevemos um WebService 'Server', devemos especfiicar o tipo da informao de cada parmetro e retorno, em conformidade com a especificao 'SOAP', utilizada nos pacotes XML de troca de dados. So considerados e suportados pelo Protheus, quando da declarao dos parmetros e retorno, os seguintes tipos bsicos : String Date Integer Dado Advpl do tipo String. Dado Advpl do tipo Data. Dado Advpl do Tipo numrico (apenas numeros inteiros.) Float Dado Advpl do Tipo numrico (pode conter numeros inteiros e no-inteiros.) Boolean Dado Advpl do Tipo Booleano ( lgico ) . Base64Binary Dado Advpl do Tipo String Binria , aceitando todos os Caracteres da Tabela ASCII , de CHR(0) a CHR(255) Observaes

Ao declararmos uma propriedade como sendo do tipo "String", no podemos especificar a palavra "String" em letras maisculas. A palavra STRING, escrita desta maneira, interpretada pelo pr-compilador do Protheus como sendo uma constante, ocasionando erro de sintaxe da compilao do WebService.

05. Estruturas - Tipos complexos


Reviso: 23/04/2004 Abrangncia Verso 7.10 Definio de Estrutura Uma estrutura ( tambm conhecida por Complex Type ), constitui uma classe especial do Advpl, chamada WSSTRUCT, criada especificamente para WebServices. Devemos criar uma estrutura quando temos a necessidade de agrupar mais de uma informao, incluindo tipos bsicos e/ou outras estruturas. Ao criarmos um servio que dever receber como parmetro um grupo de informaes definido, por exemplo, os dados cadastrais de um cliente, devemos criar uma estrutura para agrupar estes dados. Vale ressaltar que a declarao de uma estrutura no amarra a mesma o servio em questo, de modo que a mesma estrutura pode ser utilizada para mais de um servio compilado no repositrio. Caso a estrutura criada seja especfica para o servio em questo, recomendado que seja dado um nome mesma que etnha a ver com o servio o qual ela pertena, pois no possvel compilar mais de uma estrutura de mesmo nome no repositrio. Verso 8.11

06. Mtodos 'Server' em Advpl Caractersticas


Reviso: 26/04/2004 Abrangncia Verso 7.10 Definio Um mtodo de um WebService consiste em uma ao a ser disponibilizada no servio. Damos a ela um nome para identificao, declaramos a mesma na estrutura da classe do Servio, bem como seus parmetros e respectivo retorno. Parmetros Ao declarar o fonte de um mtodo, o mesmo pode receber um ou mais parmetros, de tipo bsico e/ou estruturas, e inclusive pode no receber parmetro algum. Neste caso, devemos especificar que o parmetro recebido ser NULLPARAM, ou seja, nenhum parmetro. Retorno Um mtodo de WebServices deve obrigatoriamente tr uma propriedade de retorno. No faz parte da especificao de WebServices a criao de um mtodo que no possua retorno. Codificando o mtodo em Advpl Como visto anteriormente, tanto os parmetros quanto o retorno de um mtodo de WebServices deve ser declarado como um dado da classe ( atravs da instruo WSDATA ). Quando escrevemos um mtodo de um WebService, e o mesmo recebe uma solicitao de processamento, as propriedades declaradas como parmetros do mtodo so alimentadas, e o mtodo executado. Por tratarem-se de propriedades, o cdigo fonte Advpl dever interagir com estas propriedades, prefixando-as com '::' dois pontos seguidos), ou 'self:' , sendo isto vlido tanto para os parmetros do mtodo, como para a propriedade de retorno. Dada a existncia de uma LIB de Infra-Estrutura, que realiza a camada de comunicao, validao, montagem e desmontagem de pacotes; ao codificar um mtodo de WebService existem sempre dois retornos : A propriedade de retorno do mtodo, e o retorno efetivo do mtodo ao final do processamento. Verso 8.11

O retorno efetivo do mtodo deve ser um valor booleano : Se retornado .T. (True) , isto indica LIB, que o mtodo foi executado com sucesso, e consequentemente a propriedade de retorno foi alimentada. Logo, o pacote 'SOAP' de retorno do mtodo ser montado pela LIB, e devolvida automaticamente o 'Client' que solicitou a chamada de processamento. Caso o retorno efetivo do mtodo seja .F. (False), isto indica LIB que, por alguma razo tratada no fonte do mtodo, no foi possvel a execuo do mtodo. Neste caso, devemos especificar, antes do retorno, atravs da funo SetSoapFault(), a causa da impossibilidade de processamento. Exemplo WSMETHOD GetDate WSRECEIVE NULLPARAM WSSEND Horario WSSERVICE ServerTime If dow(date())=1 // Seta um soap_fault, informando que este servio no disponvel aos domingos SetSoapFault('Metodo no disponvel','Este servio no funciona aos Domingos.') // e retorna .F., indicando que o servio no foi processado com sucesso. Return .f. Endif // alimenta a propriedade de retorno ::Horario := time() // E retorna .T. indicando processamento do mtodo com sucesso Return .T. Ateno :

Sempre que o retorno efetivo do mtodo verdadeiro (.T. ), a propriedade de retorno deve ser preenchida. Caso ela no seja preenchida, a LIB ir retornar o client solicitante um pacote de SOAP Fault, indicando que houve um erro no processamento do servio, e registrar um error.log na estao servidora. Ser gerado tambm uma ocorrncia de erro, caso o mtodo retorne .T., porm a funo SetSoapFault() tenha sido chamada durante a execuo do mtodo. A ocorrncia gerada <SERVICO> : <METODO> RETURN .T. WITH SOAP FAULT EXCEPTION NOT EMPTY. Sempre que o retorno efetivo do mtodo falso (.F.), a funo SetSoapFault() deve ser chamada, para que a LIB gere um pacote com o motivo do erro para o 'Client' que solicitou o mtodo. Caso o retorno efetivo seja .F. , e a funo SetSoapFault() no tenha sido chamada, devolvido estao 'Client' solicitante do processamento um Soap:Fault , com a ocorrncia de erro <SERVICO> : <METODO> RETURN .F. WITH SOAP FAULT EXCEPTION EMPTY.

07. Tratamento de Erro dos WebServices


Reviso: 27/04/2004 Abrangncia Verso 7.10 Verso 8.11

Dada a infra-estrutura envolvida no processamento dos WebServices, a rotina de tratamento de erro da aplicao WebServices 'Server' prev o tratamento de ocorrncias, desde advertncia de carga dos servios, at falhas de inicializao de ambiente, passando por erros que invalidam um determinado servio compilado, at as ocorrncias de inconsistncias de parmetros de chamada do servio, inconsistncias de retorno, ocorrncias de erro fatal de processamento na aplicao, e ocorrncias de processamento que no constituam um erro fatal, porm devem retornar um pacote de ocorrncia de erro, conhecido por SOAP FAULT . Os tratamentos aplicados s ocorrncias reproduxidas no momento da carga do ambiente de WebServices esto relacionados no tpico "Falhas de Carga dos Servios", os relacionados ocorrncias de erro fatal de execuo dos servios esto em "Ocorrncias de Erro Fatal", e a discrminao da utilizao do Soap Fault est est descrita em "Utilizao do SOAP FAULT".

08. Utilizao do SOAP FAULT


Reviso: 30/04/2004 Abrangncia Verso 7.10 Verso 8.11

Quando desenvolvemos um servio, e temos a necessidade de retornar ao 'Client' solicitante do processamento, uma ocorrncia de falha no-fatal de um determinado processamento, deve ser retornado ao mesmo um pacote SOAP, que indica a causa da falha. Este pacote conhecido por 'SOAP FAULT'. A rotina de tratamento de erro fatal de execuio do WebService, quando da ocorrncia de tal, gera automaticamente um 'SOAP FAULT' com a descrio resumida da ocorrncia o client solicitante. Dado que, a camada da lib, responsvel pela interpretao do pacote SOAP recebido pelo servio, j se encarrega de validar o formato do pacote e contedos obrigatrios, um Web Service escrito em Advpl deve, antes de realizar o processamento proposto, validar se o contedo dos parmetros est dentro da faixa de dados esperada, e condizentes com o esperado; para ento realizar o processamento e retornar o client solicitante. Para inserir as excesses de execuo com Soap-Fault, em um servio 'Server', utilizamos a funo SetSoapFaut(). Soap-Faults padro do Servidor Protheus de WebServices A camada de comunicao da infra-estruruta de WebServices, realiza automaticamente os tratamentos de protocolo, formato do pacote SOAP e parmetros obrigatrios. Caso exista alguma inconsistncia na chamada de um servio, que incorra em alguma destas excesses, o servio solicitado no chamado, e o servidor Protheus devolve automaticamente o client solicitante um Soap-Fault, indicando o que aconteceu. Estas ocorrncias de Soap-Fault so mostradas no console do servidor Protheus, e so armazenadas tambm no arquivo error.log do ambiente utilizado. Soap-Faults padro aps processamento do servio A camada de comunicao da infra-estruruta de WebServices valida tambm a montagem do pacote de retorno. Caso exista alguma propriedade de retorno obrigatrio do servio que no esteja alimentada de forma correta, o servidor Protheus devolve automaticamente o client solicitante um Soap-Fault, indicando que ocorreu um erro interno no servidor de WebServices.

09. Servio de Exemplo : SERVERTIME


Reviso: 27/04/2004 Abrangncia Verso 7.10 Verso 8.11

Inicialmente, o exemplo proposto tm o objetivo de montar um WebService que retorne o horrio no servidor Protheus. Para tal, ser criado um servio, com apenas (inicialmente) um mtodo. A este servio, daremos a ele o nome de SERVERTIME. E, ao mtodo de buscar o horrio no servidor, daremos o nome de GETSERVERTIME. A operao de buscar o horrio atual no servidor no necessita de nenhum parmetro para a execuo. Porm, ela ter um retorno : O horrio atual , no formato 'hh:mm:ss'. A especificao de um WebServices permite que um servio seja declarado de modo a no receber nenhum parmetro, porm exige que o WebService sempre possua um retorno. Codificando o Servio Para codificar um servio, devemos utilizar o Protheus IDE, e criar um novo arquivo de programa, e nele escrever o servio. A numerao disposta esquerda do cdigo-fonte meramente ilustrativa, no devendo ser digitada. Ela utilizada mais abaixo, onde este cdigo detalhado linha a linha.
1 #INCLUDE 'PROTHEUS.CH' 2 #INCLUDE 'APWEBSRV.CH' 3 4 WSSERVICE SERVERTIME 5 WSDATA Horario as String 6 WSMETHOD GetServerTime 7 ENDWSSERVICE 8 9 WSMETHOD GetServerTime WSRECEIVE NULLPARAM WSSEND Horario WSSERVICE SERVERINFO 10 ::Horario := TIME() 11 Return .T. Linha 1 especificada a utilizao do Include Protheus.ch, contendo as definies dos comandos ADVPL e demais constantes Linha 2 Tambm especificamos a o Include ApWebSrv.ch, que contm as definies de comandos e constantes utilizados nas declaraoes de estruturas e mtodos dos Web Services. Ele obrigatrio para o desenvolvimento de WebServices. Linha 4 Com esta instruo, definido o inicio da classe do servio principal, ao qual demos o nome de SERVERTIME Linha 5 Dentro da estrutura deste servio, informado que um dos parametros utilizados chama-se horrio, e ser do tipo String

Linha 6 Dentro da estritura deste servio, informado que um dos mtodos do servio chama-se GetServerTime . Linha 7 Como no so necessrias mais propriedades ou metodos neste servio, a estrutura do servio fechada com esta instruo.. Linha 9 Aqui declarado o fonte do Mtodo GetServerTime, que no receber parametro nenhum ( mas para efeitos de declarao deve ser informado que ele receber o parametro NULLPARAM ), e informado que seu retorno ser o dado Horario ( declarado na classe do servio como uma propriedade, do tipo String ) . Linha 10 atribudo na propriedade ::Horario da classe deste servio, o retorno da funo Advpl Time(), que retorna a hora atual no servidor no formato HH:MM:SS. Devemos utilizar o '::', para alimentarmos a propriedade da classe atual Linha 11 O mtodo GetServerTime finalizado nesta linha, retornando .T. (true), indicando que o servio foi executado com sucesso.

Aps compilado o servio, deve ser acessada novamente a pgina de ndice de servios (wsindex.apw), e verificar se o novo servio compilado l se encontra. Testando o Servio Ao acessar a pgina de ndice, e constatarmos a existncia do servio, devemos obter o link atravs do qual o WSDL deste servio est sendo fornecido, e utilizarmos de uma ferramenta para gerar um 'Client' que possibilite o uso deste servio. possvel, inclusive, utilizar o Protheus IDE para gerar o fonte 'Client' para testar o servio; porm existe a necessidade de criar uma funo para instanciar a classe 'Client' gerada, alimentar os parmetros e testar o servio. A partir da verso Protheus 8, podemos apenas gerar um fonte 'Client' desta classe, e compil-lo no mesmo repositrio do ambiente utilizado pelo WebServices 'Server', que a prpria interface de ndice de Servios ir permitir o teste do mesmo.

Falhas de Carga dos Servios


Reviso: 06/05/2004 Abrangncia Verso 7.10 Verso 8.11

Neste tpico so abordadas as mensagens de ocorrncias relacionadas carga dos servios. Durante a inicializao do engine de Web Services, os servios compilados so validados, e um ambiente montado por thread para o atendimento de solicitaes de processamento. Neste processo, existem ocorrncias, relacionadas montagem do ambiente, que podem impossibilitar a operao dos WebServices como um todo; e ocorrncias que podem invalidar apenas um servio, em caso ed inconsistncia da declarao do mesmo.

Erro de Estrutura : ARRAY OF em parametro de en...


Reviso: 27/04/2004 Abrangncia Verso 7.10 Verso 8.11

XXX : Erro de Estrutura : ARRAY OF em parametro de entrada direto nao suportado. Durante a etapa de validao dos servios, na carga dos WebServices, esta ocorrncia reproduzida quando um parmetro [XXX] foi utilizado como parmetro de entrada direto de um WebService, porm o mesmo foi declarado com tratamento de 'Array Of'. No suportado receber diretamente um array como parmetro de um mtodo de WebServices 'Server'. Verifique e corrija o cdigo-fonte, e crie uma estrutura intermediria para encalsular o parmetro que deve ter tratamento de Array.

Erro de Estrutura : Estrutura Indefinida.


Reviso: 27/04/2004 Abrangncia Verso 7.10 Verso 8.11

[XXX] : Erro de Estrutura : Estrutura Indefinida. Durante a etapa de validao dos servios, na carga dos WebServices, esta ocorrncia reproduzida quando uma propriedade da classe server foi especificado como sendo uma estrutura ( tipo no-bsico), porm a declarao da estrutura no foi localizada. Verifique e corrija o cdigo-fonte e proceda com a declarao da referida estrutura.

Erro de Estrutura : Nome de Estrutura Invlido ...


Reviso: 27/04/2004 Abrangncia Verso 7.10 Verso 8.11

[XXX] Erro de Estrutura : Nome de Estrutura Invlido - Tipo bsico conflitante. Durante a etapa de validao dos servios, na carga dos WebServices, esta ocorrncia reproduzida quando o nome de uma determinada estrutura [XXX] foi especificado com um nome igual a um tipo bsico de informao. Esta ocorrncia invalida apenas o servio que utiliza a determinada estrutura. Verifique e corrija o cdigo-fonte e a declarao do tipo da estrutura.

Erro de Mtodo : Estrutura de Entrada no encon...


Reviso: 27/04/2004 Abrangncia Verso 7.10 Verso 8.11

[XXX] : [YYY] : Erro de Mtodo : Estrutura de Entrada no encontrada. Durante a etapa de validao dos servios, na carga dos WebServices, esta ocorrncia reproduzida quando um determinado mtodo [XXX] foi especificado com algum parmetro de entrada [YYY], cuja declarao no foi encontrada como uma propriedade no fonte construtor do servio. Verifique e corrija o cdigo-fonte, e declare o parmetro YYY como uma propriedade da classe XXX

Erro de Mtodo : Estrutura de Retorno no encon...


Reviso: 27/04/2004 Abrangncia Verso 7.10 Verso 8.11

[XXX] : [YYY] : Erro de Mtodo : Estrutura de Retorno no encontrada. Durante a etapa de validao dos servios, na carga dos WebServices, esta ocorrncia reproduzida quando um determinado mtodo [XXX] foi especificado com uma estrutura [YYY], cuja declarao no foi encontrada como uma propriedade no fonte construtor do servio. Verifique e corrija o cdigo-fonte, e declare a propriedade YYY como uma propriedade da classe XXX

Erro de Mtodo : Estrutura de Retorno no pode ...


Reviso: 27/04/2004 Abrangncia Verso 7.10 Verso 8.11

[XXX] : [YYY] : Erro de Mtodo : Estrutura de Retorno no pode ser recebida como parmetro. Durante a etapa de validao dos servios, na carga dos WebServices, esta ocorrncia reproduzida quando um determinado mtodo [XXX] foi declarado para receber uma estrutura [YYY] e retornar a mesma estrutura [YYY] . Isto no suportado pelos WebServices do Protheus. Verifique e corrija o cdigo-fonte.

Erro de Mtodo : Mtodo [XXX] do Servio [YYY] ...


Reviso: 27/04/2004 Abrangncia Verso 7.10 Verso 8.11

Erro de Mtodo : Mtodo [XXX] do Servio [YYY] no declarado no Servio. Durante a etapa de validao dos servios, na carga dos WebServices, esta ocorrncia reproduzida quando um determinado mtodo [XXX], referente o servio [YYY], foi codificado, porm no foi declarado no construtur do Web Service. Esta ocorrncia invalida apenas o servio que utiliza a determinada estrutura. Verifique e corrija o cdigo-fonte e proceda com a declarao do mtodo no construtor do servio.

Erro de Mtodo : Nome de Mtodo Invlido - Tipo...


Reviso: 27/04/2004 Abrangncia Verso 7.10 Verso 8.11

[XXX] Erro de Mtodo : Nome de Mtodo Invlido - Tipo bsico conflitante. Durante a etapa de validao dos servios, na carga dos WebServices, esta ocorrncia reproduzida quando o nome de uma determinada mtodo [XXX] foi especificado com um nome igual a um tipo bsico de informao. Esta ocorrncia invalida apenas o servio que utiliza o determinado mtodo. Verifique e corrija o cdigo-fonte e a declarao do nome do mtodo.

Erro de Estrutura : Redundancia de Estruturas


Reviso: 27/04/2004 Abrangncia Verso 7.10 Verso 8.11

Durante a etapa de validao dos servios, na carga dos WebServices, esta ocorrncia reproduzida quando temos uma cadeia de estruturas, compostas por tipos bsicos e outras estruturas, e a declarao das estruturas entre em redundncia. Por exemplo, declaramos a estrutura <A>, que tem dentro dela uma outra propriedade que do tipo <A>, ou a estrutura <A> tm uma propriedade de tipo <B>, e <B> por sua vez tem uma propriedade do Tipo <A>. Verifique e corrija o cdigo-fonte e corrija a declarao das estruturas envolvidas.

WSDL Server ONLOAD ERROR Falha Interna na ...


Reviso: 27/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSDL Server ONLOAD ERROR - Falha Interna na Carga do WebService Esta ocorrencia apresentada na tela de ndice dos WebServices ( wsindex.apw ), quando algum erro fatal ocorra na carga dos WebServices. Os detalhes sobre a ocorrncia fatal so mostrados no console do servidor Protheus, e gravados no arquivo error.log do ambiente em uso.

Ocorrncias de Erro Fatal - AUTOMATIC URLLOCATION FAILED


Reviso: 22/04/2004 Abrangncia Verso 7.10 Verso 8.11

Ao configurarmos um WebService 'Server', devemos especificar, atravs da chave URLLOCATION , a url especfica para o acesso os servios. Quando no definimos esta URL, a lib de WebServices identifica automaticamente sob qual host o servio foi acessado. Esta operao no possvel quando o header HTTP do pacote informe uma operao diferente de "GET" ou "POST", ou o servidor Protheus est sendo execudado em sua verso ISAPI, em conjunto com o Microsoft (R) Information Service. Caso no seja possvel identificar o host sob o qual a chamada foi realizada, o WebService no processado, e o processamento abortado com a ocorrncia de erro acima.

Ocorrncias de Erro Fatal - BUILD [XXX]

USING WEBSERVICES HTTPS NOT SUPPORTED


Reviso: 22/04/2004 Abrangncia Verso 7.10 Verso 8.11

Quando da carga inicial dos WebServices 'Server', a configurao URLLOCATION criticada pela Lib. Caso seja especificado que o acesso ser realizado via 'HTTPS', e o build atual do servidor Protheus utilizado ainda no suporta a utilizao do WebService sob o protocolo HTTPS.

INVALID URLLOCATION [XXX] ON [YYY]


Reviso: 22/04/2004 Abrangncia Verso 7.10 Verso 8.11

Quando da configurao do servidor Protheus para WebServices, caso especificada a configurao URLLOCATION, porm a mesma no seja especificada com uma sintaxe vlida, o processamento abortado na subida das Working Threads do servidor, com esta ocorrncia de erro fatal, indicando em [XXX] a url informada, e em [YYY] o nome do arquivo de configurao do servidor Protheus. Uma url considerada invlida, caso ela no seja iniciada com 'http://' ou 'https://', seja finalizada com um caractere no-alfanumrico ou diferente de '/', ou possua caracteres acentuados ou espaos. So considerados vlidos apenas caracteres alfanumricos, e os caracteres ':' (dois pontos), '.' (ponto), '/' (barra) e '-' (hfen). Esta validao foi implementada na Infra-Estrutura de Web Services a partir da verso de infra-estrutura 'ADVPL WSDL Server 1.031209'

Ocorrncias de Erro Fatal - REQUIRED

Return property [X] AS ARRAY OF [Y] IS ..


Reviso: 23/04/2004 Abrangncia Verso 7.10 Verso 8.11

REQUIRED Return property [X] AS ARRAY OF [Y] IS EMPTY Esta ocorrncia de erro, reproduzida quando do trmino do processamento de um mtodo de um WebServices, na camada da LIB, quando da gerao do pacote 'SOAP' de retorno o 'Client' solicitante do servio. Quando da identificao da propriedade [X] de retorno obrigatrio do mtodo , a mesma deveria ser um 'Array' Advpl, contendo no mnimo um elemento; porm o array no continha nenhum elemento. Verifique o mtodo solicitado, e certifique-se que a propriedade de retorno esteja sendo alimentada.

Ocorrncias de Erro Fatal - REQUIRED

Return property [X] Type [Y] Unexpect ...


Reviso: 23/04/2004 Abrangncia Verso 7.10 Verso 8.11

REQUIRED Return property [X] Type [Y] Unexpected Valtype [Z] Esta ocorrncia de erro, reproduzida quando do trmino do processamento de um mtodo de um WebServices, na camada da LIB, quando da gerao do pacote 'SOAP' de retorno o 'Client' solicitante do servio. Quando da identificao da propriedade obrigatria [X] de retorno do mtodo , a mesma deveria ser alimentada com um contedo Advpl do tipo [Y], porm, ao invs deste, ela continha um valor do tipo Advpl [Z]. Verifique o mtodo solicitado, e certifique-se que a propriedade de retorno esteja alimentada com um contedo do tipo [Y], em conformidade com a declarao da propriedade no servio.

Ocorrncias de Erro Fatal - Return

property [X] AS ARRAY Type [Y] Unexpected..


Reviso: 23/04/2004 Abrangncia Verso 7.10 Verso 8.11

Return property [X] AS ARRAY Type [Y] Unexpected Valtype [Z] Esta ocorrncia de erro, reproduzida quando do trmino do processamento de um mtodo de um WebServices, na camada da LIB, quando da gerao do pacote 'SOAP' de retorno o 'Client' solicitante do servio. Quando da identificao da propriedade [X] de retorno do mtodo , a mesma deveria ser um 'Array' Advpl, contendo elementos do typo [Y], porm, ao invs da propriedade ser um do Tipo A (Array), ela continha um valor do tipo Advpl [Z]. Verifique o mtodo solicitado, e certifique-se que a propriedade de retorno esteja alimentada com um array,

Ocorrncias de Erro Fatal - Return

property [X] AS OBJECT Type [Y] Unexpect ..


Reviso: 23/04/2004 Abrangncia Verso 7.10 Verso 8.11

Return property [X] AS OBJECT Type [Y] Unexpected Valtype [Z] Esta ocorrncia de erro, reproduzida quando do trmino do processamento de um mtodo de um WebServices, na camada da LIB, quando da gerao do pacote 'SOAP' de retorno o 'Client' solicitante do servio. Quando da identificao da propriedade [X] de retorno do mtodo , a mesma deveria ser uma Estrutura ( Tipo Advpl 'O' - Objeto ) Advpl, do typo [Y], porm a propriedade de retorno continha um valor do tipo Advpl [Z]. Verifique o mtodo solicitado, e certifique-se que a propriedade de retorno seja alimentada com a respectiva estrutura, em conformidade com a declarao da propridade da classe do servio.

Ocorrncias de Erro Fatal - Return

property [X] Type [Y] Unexpected Valtype ..


Reviso: 23/04/2004 Abrangncia Verso 7.10 Verso 8.11

Return property [X] Type [Y] Unexpected Valtype [Z] Esta ocorrncia de erro, reproduzida quando do trmino do processamento de um mtodo de um WebServices, na camada da LIB, quando da gerao do pacote 'SOAP' de retorno o 'Client' solicitante do servio. Quando da identificao da propriedade [X] de retorno do mtodo , a mesma deveria ser alimentada com um contedo Advpl do tipo [Y], porm, ao invs deste, ela continha um valor do tipo Advpl [Z]. Verifique o mtodo solicitado, e certifique-se que a propriedade de retorno esteja alimentada com um contedo do tipo [Y], em conformidade com a declarao da propriedade no servio.

Ocorrncias de Erro Fatal - UNKNOW

ERROR : EMPTY HTTP RETURN


Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

Quando do processamento de uma requisio de um mtodo de WebServices 'Server', so executadas consistncias de pr-processamento e ps-processamento. Todas as consistncias internas realizadas tm uma mensagem de retorno. Quando do final da execuo do servio, independentemente de ocorrer um processamento com sucesso ou com falha ( SoapFault ), verificado se o tratamento efetuado gerou um pacote com a mensagem de retorno. Caso esta ocorrncia seja reproduzida, ela indica que ocorreu uma falha no tratada, ou uma impossibilidade de gerao do pacote de retorno. At o momento, esta ocorrncia no foi reproduzida sob nenhuma condio.

Ocorrncias de Erro Fatal - [SVC] :

[METHOD] as [X] : Tipo Inesperado de Ret..


Reviso: 06/05/2004 Abrangncia Verso 7.10 Verso 8.11

[SVC] : [METHOD] as [X] : Tipo Inesperado de Retorno do Mtodo. A ocorrncia de erro acima reproduzida, quando do trmino da execuo de um mtodo de uma classe 'Server' de WebServices. A LIB espera um valor booleano ( .T. ou .F. ) de retorno efetivo do mtodo. Caso o retorno efetivo no seja booleano, o processamento abortado com a ocorrncia acima, identificando o servio chamado em [SVC], o mtodo em [METHOD], e o tipo do retorno efetivo retornado em [X]. Verifique o cdigo-fonte do mtodo do servio, e certifique-se que o retorno efetivo do mtodo seja sempre .T. ou .F.

Aplicaes Protheus 'Client' de WebServices


Reviso: 30/04/2004 Abrangncia Verso 7.10 Definio de Client Quando um Web Service 'Server' criado e disponibilizado, junto dele tambm disponibilizada a definio do servio, seus argumentos, estruturas e retornos (WSDL) . Para a utilizao de um Web Service, necessrio montar um programa client, que seja capaz de montar um envelope SOAP com os dados necessrios ao processamento do Servio, realizar a chamada, e tratar o pacote de retorno do servio e suas respectivas excesses. Embora existam Web Services que podem ser acessados via Http direto, apenas passando parmetros via URL, o client de Web Services do Protheus tm seu foco e recursos direcionados apenas a servios que possuam interface de comunicao que realize POST de pacotes de dados XML em formato SOAP. O Protheus possui ferramentas e infra-estrutura incorporadas que permitem esta integrao. Gerao do Client em Advpl Utilizando o IDE, encontra-se disponvel, no menu 'Ferramentas', a opo para que, atravs de um link para a obteno do documento WSDL de um servio, o Protheus gere automaticamente, em Advpl, uma classe 'Client' para a comunicao e utilizao do mesmo. Para tal, basta obtermos o endereo internet ( URL ) do WSDL desejado, criar um novo arquivo-fonte, e acessar o menu 'Ferramentas -> Gerar Cliente WebServices...'. Para cada servio que se tenha a necessidade de gerao de um fonte client, recomenda-se fortemente que cada fonte client seja gerado em um arquivo independente e exclusivo para este fim, e que de forma alguma este fonte gerado pelo assistente seja alterado. Requisitos bsicos para a Gerao do Client em Advpl O processo de gerao de fonte disparado atravs do IDE, porm o servidor Protheus que ir buscar o documento WSDL solicitado. De modo que, a estao servidora utilizada no ambiente deve ter acesso o endereo solicitado. Verso 8.11

Aplicaes Protheus 'Client' de WebServices - Gerao de Client em Advpl - Passo 01


Reviso: 30/04/2004 Abrangncia Verso 7.10 Verso 8.11

Passo 1 : Determinar como obter o WSDL do servio desejado A maioria das definies WSDL dos servios disponiveis na WEB so acessados atravs de uma URL, em geral apontando para o servidor onde o servio est publicado, contendo o nome do servio na url e um sufixo ?WSDL ou .WSDL na Url. No h padro definido para tal, de modo que cada servidor pode disponibilizar ( ou no ) o WSDL de uma maneira diferente . O WSDL de alguns servios restritos ( como por exemplo o servio de busca na base de dados do Google ) so disponibilizados em arquivo ASCII, enviados por e-mail, apos um cadastro no site e autorizao da empresa para o uso do servio por ele provido. No nosso exemplo ilustrativo, a definio do servio obtida diretamente via http, atravs do link http://localhost/SERVERTIME.apw?WSDL Caso este link seja acessado atravs de um Web Browser ( Internet .Explorer., por exemplo ), ser exibido no browse um documento XML correspondendo a definio do servio.

Aplicaes Protheus 'Client' de WebServices - Gerao de Client em Advpl - Passo 02


Reviso: 30/04/2004 Abrangncia Verso 7.10 Verso 8.11

Passo 2 : Gerar o Fonte AdvPl do client usando o Assistente do IDE Ao ser gerado um fonte client para um Web Service, este fonte conter as definies dos metodos do servio, a(s) estrutura(s) utilizada(s) no mesmo, e a(s) classe(s) intermediria(s) de uso interno para montagem e desmontagem da(s) estrutura(s) ; visando o encapsulamento de todos os tratamentos de envio e recebimento de dados atravs de pacotes SOAP. O Fonte gerado atravs do assistente de criao de fonte deve preferencialmente ser gerado e compilado em um arquivo exclusivo, destinado unica e exclusivamente a este cdigo. E, por tratar-se de uma classe Advpl gerada a partir da definio de um servio, no deve ser inserida e/ou alterada nenhuma das definies geradas pelo assistente, pois as mesmas sero perdidas caso o fonte seja gerado novamente . Para gerao do fonte client em Advpl para utilizar este servio, necessrio criar um novo arquivo .PRX no IDE, especificamente para conter as classes deste servio . Ento, deve ser acessado o menu Ferramentas, opo Gerar Ciente Webservices . Neste momento, ser mostrado na tela um pop-up semelhante ao mostrado abaixo :

No campo de entrada de dados, deve ser digitada a URL de onde o servidor ir obter a definio do WebSErvice. ( no nosso caso, http://localhost/SERVERTIME.apw?WSDL ) . Aps a confirmao da janela acima, caso o processamento ocorra com suicesso, na janela de mensagens do Ide ser mostrado um texto semelhante ao abaixo : Estabelecendo conexo com o server... Por favor aguarde. Obtendo descrio do WebService... Finalizando conexo com o server... Ok

E, na janela do novo arquivo criado, dever ser criado um cdigo-fonte semelhante ao mostrado abaixo :
#INCLUDE 'PROTHEUS.CH' #INCLUDE 'APWEBSRV.CH' --- header do servio --/* ================================================================ =============== WSDL Location http://localhost/SERVERTIME.apw?WSDL Gerado em 12/30/02 17:21:29 Observaes Cdigo-Fonte gerado por ADVPL WSDL Client 1.021217 B Alteraes neste arquivo podem causar funcionamento incorreto e sero perdidas caso o cdigo-fonte seja gerado novamente. ================================================================ =============== */ /* ------------------------------------------------------------------------------WSDL Service WSSERVERTIME ------------------------------------------------------------------------------- */ --- declarao da Classe client do WebService, com metodos e propriedades utilizadas --WSCLIENT WSSERVERTIME WSMETHOD NEW WSMETHOD GETSERVERTIME WSDATA _URL AS String WSDATA cGETSERVERTIMERESULT AS string ENDWSCLIENT --- declarao do mtodo NEW, para a criao do Objeto / Servio --WSMETHOD NEW WSCLIENT WSSERVERTIME ::_URL := NIL ::cGETSERVERTIMERESULT := '' Return Self /* ------------------------------------------------------------------------------WSDL Method GETSERVERTIME of Service WSSERVERTIME ------------------------------------------------------------------------------- */ --- Definio do mtodo, que recebe os parmetros de chamada, executa o servio e alimenta as propriedades de retorno do metodo, contendo os encapsulamentos necessrios para tratamento de excesses --WSMETHOD GETSERVERTIME WSSEND NULLPARAM WSRECEIVE cGETSERVERTIMERESULT WSCLIENT WSSERVERTIME Local cSoap := '', oXmlRet BEGIN WSMETHOD DEFAULT ::_URL := 'http://localhost/SERVERTIME.apw' cSoap += '<GETSERVERTIME xmlns='http://localhost/'>' cSoap += '</GETSERVERTIME>' oXmlRet := SvcSoapCall( Self,cSoap,; 'http://localhost/GETSERVERTIME',; 'DOCUMENT','http://localhost/',)

::cGETSERVERTIMERESULT := xGetInfo( oXmlRet, '_GETSERVERTIMERESPONSE:_GETSERVERTIMERESULT:TEXT', '' ) END WSMETHOD oXmlRet := NIL Return .T.

O fonte acima constitui uma Classe em Advpl, gerada para realizar a interface com a classe original publicada no Server, j realizando os tratamentos adequados para realizar a comunicao via http com o servidor onde o servio est publicado. Vale obvervar que, as linhas em negrito no fonte acima no foram inseridas pelo assistente do IDE, mas acrescentadas a este documento para fins didticos. O cabealho do fonte contm informaes sobre a localizao do WSDL utilizado para a gerao do fonte, data e hora de gerao e verso do engine de Web Services utilizado . Logo abaixo, a declarao de uma classe client de Web Services ( WSCLIENT WSSERVERTIME ), com o mtodo new() para inicializao das propriedades advpl da classe . E, em seguida, a declarao do mtodo de busca de Horrio ( WSMETHOD GETSERVERTIME ), que no envia parmetro algum, e retorna o horrio atual do server em :: cGETSERVERTIMERESULT, com todos os tratamentos necessrios embutidos.

Aplicaes Protheus 'Client' de WebServices - Gerao de Client em Advpl - Passo 03


Reviso: 22/04/2004 Abrangncia Verso 7.10 Verso 8.11

Passo 3 : Criar um fonte que utilize esta classe para utilizao do WebService. Agora, necessrio criar um novo arquivo no IDE, e montar uma funo para utilizar a classe de Web Services client para obter o horrio no servidor.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 Linha 1 #INCLUDE 'PROTHEUS.CH' User Function TestClient() Local oSvc := NIL oSvc := WSSERVERTIME():New() If oSvc:GETSERVERTIME() alert('Horrio no Servidor : '+ oSvc:cGETSERVERTIMERESULT) Else alert('Erro de Execuo : '+GetWSCError()) Endif Return

declarada a utilizao do Include Protheus.ch, contendo as definies dos comandos ADVPL e demais constantes Linha 3 Inicia-se a definio da User Function para utilizar o Web Service Linha 4 Uma varivel local declarada para conter o Objeto do Web Service client Linha 6 Utilizando-se do servio, a varivel oSvc alimentada com uma onva instncia do Web Services client, obtida atravs da sintaxe <NOME_DO_SERVICO>():New() Linha 8 executado o mtodo GetServerTime a partir do Objeto do servio oSrv, sem passar qualquer parametro. O retorno de um mtodo do client pode ser .T. (true) em caso de execuo com sucesso ou .F. (false) em caso de falha de execuo . Linha 9 Caso o servio tenha sido executado com sucesso, o retorno esperado alimenrado na propriedade cGetServerTimeResult do objeto do servio. Linha 11 Caso contrrio ( retorno .F. ), ocorreu alguma falha na chamada do servio, como por exemplo o servidor no estava no ar, demorou muito pra responder ( time-out ), entre outras. Para ser possvel recuperar maiores detalhes sobre a ocorrncia de erro, deve ser utilizada a funo GetWSCerror(), que retorna uma string com o resumo da ocorrncia . Linha 13 O programa de teste finalizado com um Return

Aplicaes Protheus 'Client' de WebServices - Gerao de Client em Advpl - Passo 04


Reviso: 22/04/2004 Abrangncia Verso 7.10 Passo 4 : Executar o programa de testes Abra uma nova instncia do Ap Remote, e execute a funo U_TESTCLIENT . Caso o Web Service esteja no ar e funcionando, e o fonte client seja devidamente compilado e sem erros, o resultado esperado uma janela semelhante a mostrada abaixo: Verso 8.11

No ambiente montado para teste, o Servidor de Web Services e o client esto no Protheus, compilados no mesmo Repositrio de Objetos . Para fins didticos, possvel simular uma ocorrncia de falha no client, ao desabilitar o Server HTTP do Protheus (colocando enable=0 na chave [http] do arquivo de consigurao do servidor), re-iniciar o Server Protheus, e executar o programa client novamente . Deve ser obtida uma tela semelhante a exemplificada abaixo :

Aplicaes Protheus 'Client' de WebServices - Gerao de Client em Advpl - Passo 05


Reviso: 22/04/2004 Abrangncia Verso 7.10 Verso 8.11

Passo 5 : Obtendo informaes de debug Visto at o passo 4, um exemplo completo de um client funcionando perfeitamente . Agora, possvel imaginar que, durante o desenvolvimento e testes do client do servio, faam-se necessrias determinadas informaes internas as rotinas de execuo do servio no client Advpl . Para tal, foi criada uma funo que permite definir em tempo de execuo, um nvel de detalhamento de informaes adicionais relacionadas ao Web Service ; informaes estas que sero mostradas no Console do Server Protheus ( caso habilitado ) . a Funo para definir o nvel de detalhe chama-se WSDLDbgLevel(), e recebe um nmero como parmetro : 0 ( default ) 1 2 Sem informaes adicionais. Apenas String SOAP de retorno do Server. Strings Soap de Envio e Retorno.

Ento, na linha 7, acrescentada a instruo WSDLDbgLevel(2), para ativar o nvel mais completo de informacoes adicionais, e possvel observar no console do servidor as mensagens apresentadas durante a execuo do fonte de testes do client . Deve ser obtido um echo no console do server semelhante ao exemplo abaixo : Iniciando Thread (siga0984, AUTOMAN)... ------------------------------------------------------------------------------SvcSoapCall to http://automan:8000/webservice/SERVERTIME.apw / DOCUMENT NameSpace http://automan:8000/webservice/ SoapAction http://automan:8000/webservice/GETSERVERTIME Called from GETSERVERTIME ( 137) Called from U_TESTCLIENT ( 10) ---------------------------------- SOAPSEND ----------------------------------<?xml version='1.0' encoding='utf-8'?> <soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd=' http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/en velope/'> <soap:Body> <GETSERVERTIME xmlns='http://automan:8000/webservice/'>

</GETSERVERTIME> </soap:Body> </soap:Envelope> --------------------------------------------------------------------------------------------------------------- POST RETURN --------------------------------<?xml version='1.0' encoding='utf-8'?><soap:Envelope xmlns:xsi='http://www.w3.or g/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:so ap='http://schemas.xmlsoap.org/soap/envelope/'><soap:Body><GETSERVERT IMERESPONSE xmlns='http://automan:8000/webservice/'><GETSERVERTIMERESULT>10:37: 10</GETSERVE RTIMERESULT></GETSERVERTIMERESPONSE></soap:Body></soap:Envelope > ------------------------------------------------------------------------------Fim Thread (siga0984, AUTOMAN) BytesIn 73 BytesOut 75 O texto marcado em azul claro so as mensagens informativas a respeito da chamada do WebService, informando a URL chamada, o estilo soap de troca de dados ( document ), o NameSpace e o SoapAction utilizados. O Texto marcado em verde (SOAPSEND) informa o conteudo do pacote Soap que foi enviado ( postado ) ao Servidor, e o conteudo em amarelo ( POST RETURN ) informa o contedo do pacote Soap devolvido pelo Server referente a esta solicitao. Quando ocorre um erro qualquer, relacionado a execuo do client Web Services, o mtodo chamado retorna .F., e o erro pode ser recuperado atravs da funo GetWSCerror(), vista anteriormente . Para cada excesso prevista no client, existe um cdigo de erro correspondente, todos eles prefixados com WSCERR . A maioria das ocorrncias est relacionada a gerao do Cdigo fonte do client Advpl utilizado-se o IDE. Todas as ocorrenctas de excesso tratadas peo Web Services client Advpl esto relacionadas no Tpico Web Services client Cdigos de Erro .

Aplicaes Protheus 'Client' de WebServices - Tipos de dados suportados - 'Client'


Reviso: 22/04/2004 Abrangncia Verso 7.10 Verso 8.11

At o momento, so suportadas as geraes de cdigo Advpl para WebServices 'Client', que utilizam os tipos bsicos de dados listados abaixo. Para permitir a manipulao de cada tipo, utilizando variveis Advpl, so utilizados os tipos bsicos do Advpl para tratar simultaneamente mais de um tipo de dado dos pacotes 'SOAP' dos WebServices. Os tipos abaixo so disponibilizados em Advpl atravs de uma varivel de tipo 'N' Numrica

INT INTEGER BYTE FLOAT DOUBLE UNSIGNEDLONG UNSIGNEDINT DECIMAL LONG

Os tipo abaixo disponibilizado em Advpl atravs de uma varivel de tipo 'D' Data

DATE

Os tipos abaixo so disponibilizados em Advpl atravs de uma varivel de tipo 'C' Character

STRING DATETIME CHAR (**) BASE64BINARY

(**) O tipo CHAR corresponde uma string, contendo o nmero do caractere correspondente tabela ASCII Os tipo abaixo disponibilizado em Advpl atravs de uma varivel de tipo 'L' Logica

BOOLEAN

WSCERR000 / WSDL no suportado. Existe mais de ..


Reviso: 22/04/2004 Abrangncia Verso 8.11 [WSDL no suportado. Existe mais de um servio declarado.] Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. Por definio, um WSDL deve conter um e apenas um servio declarado, com um ou mais mtodos . Caso sejam identificados mais de um servio no mesmo WSDL, no momento da gerao do fonte, o processo abortado, o WSDL considerado invlido, e o fonte client no gerado.

WSCERR001 / No h SOAP:BINDINGS para a gerao ..


Reviso: 22/04/2004 Abrangncia Verso 8.11 WSCERR001 / No h SOAP:BINDINGS para a gerao do Servio. Durante a gerao do codigo-fonte para client Advpl, a partir de uma definio de servio (WSDL), uma vez identificado o servio, o gerador de cdigo procura a declarao dos BINDINGS no WSDL. Caso esta declarao no esteja presente, a rotina considera o WSDL incompleto, e aborta o processo de gerao de cdigo com esta mensagem.

WSCERR003 / [XXX / YYY] Enumeration no suportado


Reviso: 22/04/2004 Abrangncia Verso 8.11 WSCERR003 / [XXX / YYY] Enumeration no suportado Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. No processo de gerao, so analisados todos os parmetros e estruturas utilizadas pelos mtodos do servio. Quando encontrada uma estrutura bsica ( SimpleType ), onde foi especificado um 'enumeration' ( lista de parametros vlidos pr-determinada ), so suportados os seguintes tipos bsicos de parmetros, listados abaixo :

STRING FLOAT DOUBLE DECIMAL INT INTEGER LONG UNSIGNEDINT UNSIGNEDLONG

Caso o WSDL contenha um 'enumeration', utilizando um tipo de dado diferente dos declarados acima, o processo de gerao de fonte abortado com a ocorrncia de erro acima, onde o 'enumeration' no suportado identificado em <XXX> e <YYY>, correspondendo o nome do parmetro e tipo utilziado, respectivamente.

WSCERR004 / NAO IMPLEMENTADO ( 001<X> / <N> / ...


Reviso: 22/04/2004 WSCERR004 / NAO IMPLEMENTADO ( 001<X> / <N> / WSDLTYPE_NAME ) Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. No processo de gerao, so analisados todos os parmetros e estruturas utilizadas pelos mtodos do servio,at que todas as estruturas utilizadas sejam processadas. Quando deste processamento, uma estrutura contenha um determinado elemento, que aponte para uma outra estrutura, e esta no seja encontrada no WSDL ( ocorrncia <X> = A ), ou seja encontrada - porm registrada no como uma estrutura (complextype)( ocorrncia <X> = B ), o WSDL considerado invlido, e o processo de gerao abortado com a mensagem acima, identificando a estrutura pendente em <WSDLTYPE_NAME>.

WSCERR006 / WSDL invlido ou no suportado.


Reviso: 22/04/2004 Abrangncia Verso 8.11 WSCERR006 / WSDL invlido ou no suportado. Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. No processo de gerao, so analisados todos os parmetros e estruturas utilizadas pelos mtodos do servio,at que todas as estruturas utilizadas sejam processadas. Quando deste processamento, um parmetro de primeiro nvel (message) do WSDL for especificado sem nome, o WSDL considerado invlido, e o processo de gerao abortado com a mensagem acima.

WSCERR007 / WSDL invlido ou no suportado.


Reviso: 22/04/2004 Abrangncia Verso 8.11 WSCERR007 / WSDL invlido ou no suportado. Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. No processo de gerao, so analisados todos os parmetros e estruturas utilizadas pelos mtodos do servio,at que todas as estruturas utilizadas sejam processadas. Quando deste processamento, um parmetro de primeiro nvel (message) do WSDL for especificado sem definio de tipo, o WSDL considerado invlido, e o processo de gerao abortado com a mensagem acima.

WSCERR008 / Retorno NULLPARAM invlido.


Reviso: 22/04/2004 Abrangncia Verso 8.11 WSCERR008 / Retorno NULLPARAM invlido. Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. No processo de gerao, so analisados todos os parmetros e estruturas utilizadas pelos mtodos do servio,at que todas as estruturas utilizadas sejam processadas. Quando deste processamento, um parmetro de retorno do WSDL seja identificado como 'retorno nulo', o WSDL considerado invlido, e o processo de gerao abortado com a mensagem acima.

WSCERR009 / INTERNAL ERROR (X)


Reviso: 29/04/2004 WSCERR009 / INTERNAL ERROR (X) Esta uma ocorrncia de erro interna do 'engine' de gerao de cdigo-fonte Advpl, no reproduzida at o momento. Quando do processamento de um WSDL, os parmetros e mensagens especificadas no WSDL so identificados internamente como parmetros de entrada , parmetro de sada , ou entrada e saida. Caso, aps a anlise inicial de parmetros, algum parmetro no seja enquadrado nestas definies, o processamento de gerao abortado com a ocorrncia acima.

WSCERR010 / [STRUCT_TYPE] Estrutura / Tipo inc ...


Reviso: 22/04/2004 Abrangncia Verso 8.11 WSCERR010 / [STRUCT_TYPE] Estrutura / Tipo incompleto Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. No processo de gerao, so analisados todos os parmetros e estruturas utilizadas pelos mtodos do servio, at que todas as estruturas utilizadas sejam processadas. Quando deste processamento, caso uma estrutura complexa no contenha a especificao de seus elementos internos e a mesma no contenha nenhuma referncia ao SCHEMA ou outra estrutura, o WSDL considerado invlido, e o processo de gerao abortado com a mensagem acima, informando em [STRUCT_TYPE], o nome da estrutura incompleta.

WSCERR011 / Retorno NULLPARAM invlido.


Reviso: 22/04/2004 Abrangncia Verso 8.11 WSCERR011 / Retorno NULLPARAM invlido. Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. No processo de gerao, so analisados todos os parmetros e estruturas utilizadas pelos mtodos do servio,at que todas as estruturas utilizadas sejam processadas. Quando deste processamento, um parmetro de retorno do WSDL seja identificado como 'retorno nulo', o WSDL considerado invlido, e o processo de gerao abortado com a mensagem acima. Observao : Esta ocorrncia semelhante ocorrncia WSCERR008, porm esta ocorrncia (011) refere-se uma sub-estrutura do servio , e a primeira (008) refere-se um parmetro / estrutura de primeiro nvel do servio.

WSCERR012 / INTERNAL ERROR (X)


Reviso: 29/04/2004 Abrangncia Verso 7.10 WSCERR012 / INTERNAL ERROR (X) Esta uma ocorrncia de erro interna do 'engine' de gerao de cdigo-fonte Advpl, no reproduzida at o momento. Quando do processamento de um WSDL, os parmetros e mensagens especificadas no WSDL so identificados internamente como parmetros de entrada , parmetro de sada , ou entrada e saida. Caso, aps a anlise inicial de parmetros, algum parmetro no seja enquadrado nestas definies, o processamento de gerao abortado com a ocorrncia acima. Observao : Esta ocorrncia semelhante WSCERR009, porem esta indica uma falha em outro ponto da rotina interna de anlise. Verso 8.11

WSCERR013 / [SOAP_TYPE] UNEXPECTED TYPE.


Reviso: 22/04/2004 WSCERR013 / [SOAP_TYPE] UNEXPECTED TYPE. Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. No processo de gerao, so analisados todos os parmetros e estruturas utilizadas pelos mtodos do servio,at que todas as estruturas utilizadas sejam processadas. Quando deste processamento, um parmetro de tipo bsico no se encontre entre os tipos bsicos suportados pelo engine 'Client' de WebServices do Protheus, a gerao do fonte abortada com esta ocorrncia, indicando em SOAP_TYPE o tipo no suportado.

WSCERR014 / INVALID NULLPARAM INIT


Reviso: 28/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR014 / INVALID NULLPARAM INIT Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. No processo de gerao, so analisados todos os parmetros e estruturas utilizadas pelos mtodos do servio,at que todas as estruturas utilizadas sejam processadas. Quando deste processamento, para cada propriedade da estrutura do servio so montadas as rotinas de inicializao de cada uma delas. Caso a rotina de gerao de fonte receba a instruo de inicializar a propriedade reservada 'NULLPARAM', o processamento abortado com esta ocorrncia. Esta ocorrncia poderia ser causada por uma falha na validao inicial do WSDL, ou pela declarao de uma propriedade do tipo 'NULLPARAM'; e at o momento no foi reproduzida.

WSCERR015 / Node [XXX] as [YYY] on SOAP Resp ...


Reviso: 28/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR015 / Node [XXX] as [YYY] on SOAP Response not found. Esta ocorrncia reproduzida, quando da utilizao de um fonte Client de WebServices, no momento que o client est desmontando o pacote SOAP retornado pelo servio. Caso o servio utilize um soap-style RPC, e o node [XXX], correspondente ao retorno esperado do tipo [YYY] no for encontrado no pacote, o processamento do pacote de retorno abortado com esta ocorrncia. Esta ocorrncia capturada pelo prprio fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F. (falso), e a descrio da ocorrncia deve ser recuperada atravps da funo GetWSCError()

WSCERR016 / Requisio HTTPS no suportada ...


Reviso: 28/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR016 / Requisio HTTPS no suportada neste Build. [XXX] Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. Quando informada uma URL para buscar a definio do servio (WSDL), utilizando o protocolo HTTPS; porm o Build do Protheus atual no suporta o tratamento de webservices em HTTPS, a gerao do cdigo-fonte abortada com esta ocorrncia de erro. Para gerar um fonte 'Client' de WebServices, que utilize o protocolo HTTPS, o Build do Protheus deve ser atualizado.

WSCERR017 / HTTP[S] Retuisio retornou [NIL]


Reviso: 28/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR017 / HTTP[S] Requisio retornou [NIL] Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. Quando informada uma URL para buscar a definio do servio (WSDL), utilizando o protocolo HTTP ou HTTPS; e no foi possvel buscar o link solicitado, o processamento abortado com a ocorrncia acima. Dentre as possveis causas para esta ocorrncia, podemos considerar :

Sintaxe da URL invlida Servidor invlido, inexistente, ou DNF no disponvel Servidor fora do ar

Verifique a URL digitada, e realize a requisio da mesma atravs de um Web Browser, para certificar-se que a mesma vlida e que a definio WSDL est realmente publicada e acessvel sob o link informado.

WSCERR018 / HTTP[S] Requisio retornou [EMPTY]


Reviso: 28/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR018 / HTTP[S] Requisio retornou [EMPTY] Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. Quando informada uma URL para buscar a definio do servio (WSDL), utilizando o protocolo HTTP ou HTTPS; e no foi possvel buscar o link solicitado, o processamento abortado com a ocorrncia acima. Diferentemente da ocorrncia WSCERR017, esta ocorrncia foi reproduzida quando o servidor de WebServices que fornece o documento WSDL foi localizado, a requisio foi feita com sucesso, porm o servidor Protheus recebeu como retorno um pacote HTTP incompleto ou invlido. Verifique a URL digitada, e realize a requisio da mesma atravs de um Web Browser, para certificar-se que a mesma vlida e que a definio WSDL est realmente publicada e acessvel sob o link informado.

WSCERR019 / (XXX) Arquivo no encontrado.


Reviso: 28/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR019 / (XXX) Arquivo no encontrado. Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. Quando informada uma URL para buscar a definio do servio (WSDL), apontando para um arquivo no disco; porm o arquivo no foi encontrado, o processamento abortado com a ocorrncia acima. Dentre as possveis causas para esta ocorrncia, podemos considerar :

Diretrio no existente ou invlido. Arquivo no existente ou invlido. Falta de permisso de acesso o arquivo solicitado.

WSCERR020 / ( XXX / FERROR YYY ) Falha de Abertura


Reviso: 28/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR020 / ( XXX / FERROR YYY ) Falha de Abertura. Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. Quando informada uma URL para buscar a definio do servio (WSDL), apontando para um arquivo no disco; porm houve uma impossibilidade de acesso o arquivo. Dentre as possveis causas para esta ocorrncia, podemos considerar :

Arquivo aberto em modo exclusivo por outra estao Falha de permisso / direito de abertura do arquivo

Verifique as propriedades e direitos do arquivo solicitado e repita a operao.

WSCERR021 / [INFO] WSDL Parsing [PARSER_WARNING]


Reviso: 28/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR021 / [INFO] WSDL Parsing [PARSER_WARNING] Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. Quando informada uma URL para buscar a definio do servio (WSDL), aps o documento WSDL ser recuperado, caso seja detectada alguma inconsistncia, considerada pelo parser interno de xml do Protheus como uma advertncia (warning), no documento XML, o WSDL considerado invlido e a gerao do fonte cancelada, com esta ocorrncia. Em PARSER_WARNING discriminada a mensagem de advertncia do parser interno; e em [INFO] especificado o documento / operao que apresentou a inconsistncia.

WSCERR022 / [INFO] WSDL Parsing [PARSER_ERROR]


Reviso: 28/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR022 / [INFO] WSDL Parsing [PARSER_ERROR] Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. Quando informada uma URL para buscar a definio do servio (WSDL), aps o documento WSDL ser recuperado, caso seja detectada alguma inconsistncia, considerada pelo parser interno de xml do Protheus como erro no documento XML, o WSDL considerado invlido e a gerao do fonte cancelada, com esta ocorrncia. Em [PARSER_ERROR] discriminada a ocorrncia de erro do parser interno; e em [INFO] especificado o documento / operao que apresentou a inconsistncia.

WSCERR023 / [INFO] FALHA INESPERADA AO IMPORTAR ..


Reviso: 28/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR023 / [INFO] FALHA INESPERADA AO IMPORTAR WSDL Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. Quando informada uma URL para buscar a definio do servio (WSDL), aps o documento WSDL ser recuperado, caso o documento tenha passado pela etapa de validao do XML, onde o documento retornado constitui um XML sinaticamente vlido, porm o parser no identifique nenhuma estrutura referente a um documento WSDL, o documento considerado invlido, e a gerao do fonte cancelada, com esta ocorrncia. Em [INFO] especificado o documento / operao que apresentou a inconsistncia.

WSCERR024 / [MSG_INFO] MESSAGE no encontrada.


Reviso: 28/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR024 / [MSG_INFO] MESSAGE no encontrada. Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. No processo de gerao, so analisados todos os parmetros e estruturas utilizadas pelos mtodos do servio,at que todas as estruturas utilizadas sejam processadas. Quando deste processamento, caso uma seo de mensagens ( message ) seja especificado para uma operao, porm no seja encontrado no WSDL, o mesmo considerado invlido, e o processo de gerao abortado com a mensagem acima, identificando a mensagem no encontrada em [MSG_INFO]. Caso a informao [MSG_INFO] estiver vazia, o documento WSDL no especificou alguma mensagem de parmetro ou retorno na seo <portType> da lista de mtodos do WSDL.

WSCERR025 / [BIND_INFO] Binding no Encontrado.


Reviso: 28/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR025 / [BIND_INFO] Binding no Encontrado. Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. No processo de gerao, so analisados todos os parmetros e estruturas utilizadas pelos mtodos do servio,at que todas as estruturas utilizadas sejam processadas. Quando deste processamento, caso uma seo de asmarrao ( binding ) no seja localizado para uma operao especificada no WSDL, e a mesma no seja encontrada no WSDL, o mesmo considerado invlido, e o processo de gerao abortado com a mensagem acima, identificando a mensagem no encontrada em [BIND_INFO].

WSCERR026 / TARGETNAMESPACE no definido no WSDL.


Reviso: 28/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR026 / TARGETNAMESPACE no definido no WSDL. Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. No processo de gerao, so analisados todos os parmetros e estruturas utilizadas pelos mtodos do servio,at que todas as estruturas utilizadas sejam processadas. Quando iniciado este processamento, verificado se o documento WSDL contm a definio do NameSpace de destino ( TargetNameSpace ) utilizado. Caso este no seja localizado, o WSDL considerado invlido, e o processo de gerao abortado com a mensagem acima.

WSCERR027 / [OPER_INFO] BIND:OPERATION no enc ...


Reviso: 28/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR027 / [OPER_INFO] BIND:OPERATION no encontrado. Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. No processo de gerao, so analisados todos os parmetros e estruturas utilizadas pelos mtodos do servio,at que todas as estruturas utilizadas sejam processadas. Quando deste processamento, caso uma operao / mtodo do WebService no seja encontrada na seo de amarrao ( binding ), o documento WSDL considerado invlido, e o processo de gerao abortado com a mensagem acima, identificando a operao no encontrada em [OPER_INFO].

WSCERR028 / [PORT_INFO] PortType no Encontrado ..


Reviso: 28/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR028 / [PORT_INFO] PortType no Encontrado em aPort. Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. No processo de gerao, so analisados todos os parmetros e estruturas utilizadas pelos mtodos do servio,at que todas as estruturas utilizadas sejam processadas. Quando deste processamento, caso uma operao / mtodo do WebService no seja encontrada na seo de portas do WSDL ( PortType ), o documento WSDL considerado invlido, e o processo de gerao abortado com a mensagem acima, identificando a porta no encontrada em [PORT_INFO].

WSCERR029 / [PORT_INFO] PortType no contm oper..


Reviso: 28/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR029 / [PORT_INFO] PortType no contm operaes. Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. No processo de gerao, so analisados todos os parmetros e estruturas utilizadas pelos mtodos do servio,at que todas as estruturas utilizadas sejam processadas. Quando deste processamento, caso uma operao / mtodo do WebService no contenha a definio das operaes na seo de portas do servio ( PortType ), o documento WSDL considerado invlido, e o processo de gerao abortado com a mensagem acima, identificando a porta sem definio em [PORT_INFO].

WSCERR031 / [SCTUCT_NAME] Tipo sem NAMESPACE.


Reviso: 28/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR031 / [SCTUCT_NAME] Tipo sem NAMESPACE. Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. No processo de gerao, so analisados todos os parmetros e estruturas utilizadas pelos mtodos do servio,at que todas as estruturas utilizadas sejam processadas. Quando deste processamento, caso ima determinada estrutura seja identificada como sendo externa ao WSDL atual, referenciada por um IMPORT ou REF; se a estrutura estiver declarada no WSDL sem o referido namespace, o WSDL considerado invlido, e o processo de gerao abortado com a mensagem acima, identificando a estrutura incompleta em [STRUCT_NAME]

WSCERR032 / [SHORT_NS] NAMESPACE no encontrado.


Reviso: 28/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR032 / [SHORT_NS] NAMESPACE no encontrado. Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. No processo de gerao, so analisados todos os parmetros e estruturas utilizadas pelos mtodos do servio,at que todas as estruturas utilizadas sejam processadas. Quando do processamento de estruturas pendentes, identificadas como sendo externas ao WSDL atual, especificadas por um IMPORT ou REF, o namespace da mesma deve estar declarado no header do WSDL. Caso ele no seja encontrado, o WSDL considerado invlido, e o processo de gerao abortado com a mensagem acima, identificando o namespace no encontrado em [SHORT_NS].

WSCERR033 / [LONG_NS] NameSpace sem Import decl ..


Reviso: 28/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR033 / [LONG_NS] NameSpace sem Import declarado Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. No processo de gerao, so analisados todos os parmetros e estruturas utilizadas pelos mtodos do servio,at que todas as estruturas utilizadas sejam processadas. Complementar ao erro WSCERR032, este reproduzido quando o namespace idenfiicado para o parmetro seja externo ao WSDL, porm a URL para processamento do mesmo no seja especificada atravs de um Import no WSDL . Neste caso, o WSDL considerado invlido, e o processo de gerao abortado com a mensagem acima, identificando o namespace no encontrado em [LONG_NAMESPACE] .

WSCERR034 / [INFO_NS] NAMESPACE sem LOCATION ...


Reviso: 28/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR034 / [INFO_NS] NAMESPACE sem LOCATION informado. Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. No processo de gerao, so analisados todos os parmetros e estruturas utilizadas pelos mtodos do servio,at que todas as estruturas utilizadas sejam processadas. Complementar ao erro WSCERR033, este reproduzido quando a declarao da URL / Location do NameSpace externo no esteja declarado no <IMPORT...> do WSDL . Neste caso, o documento considerado invlido, e o processo de gerao abortado com a mensagem acima, identificando o namespace incompleto em [INFO_NS] .

WSCERR035 / [TYPE] Tipo indefinido.


Reviso: 28/04/2004 Abrangncia Verso 7.10 WSCERR035 / [TYPE] Tipo indefinido. Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. No processo de gerao, so analisados todos os parmetros e estruturas utilizadas pelos mtodos do servio,at que todas as estruturas utilizadas sejam processadas. Quando do processamento de estruturas pendentes, identificadas como sendo externas ao WSDL atual, especificadas por um IMPORT ou REF, o namespace da mesma identificado e importado, e todo o WSDL re-processado. No reprocessamento, caso o parmetro / estrutura pendente no seja encontrado, o WSDL considerado invlido, e o processo de gerao abortado com a mensagem acima, identificando a estrutura pendente em [TYPE] Verso 8.11

WSCERR036 / Definio no suportada.


Reviso: 28/04/2004 Abrangncia Verso 7.10 WSCERR036 / Definio no suportada. Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. No processo de gerao, so analisados todos os parmetros e estruturas utilizadas pelos mtodos do servio, at que todas as estruturas utilizadas sejam processadas. Quando da validao de estruturas complexas, caso a mesma no possua tipo definido, e no seja uma referncia externa ao WSDL, ela deve ser uma referncia ao prprio SCHEMA. Caso seja especificada qualquer outro tipo de referncia, o WSDL no suportado, e o processo de gerao abortado com a mensagem acima. Verso 8.11

WSCERR037 / [TYPE] Estrutura Interna Inesperada.


Reviso: 28/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR037 / [TYPE] Estrutura Interna Inesperada. Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. No processo de gerao, so analisados todos os parmetros e estruturas utilizadas pelos mtodos do servio,at que todas as estruturas utilizadas sejam processadas. Quando da validao de estruturas complexas, caso a mesma tenha passado por todas as interpretaes cabveis a uma estrutura, e mesmo assim no foi possvel identific-la, o WSDL considerado invlido, e o processo de gerao abortado com a mensagem acima, identificando a estrutura em [TYPE].

WSCERR038 / [PARAM] WSDL invlido ou no suportado


Reviso: 28/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR038 / [PARAM] WSDL invlido ou no suportado. Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. No processo de gerao, so analisados todos os parmetros e estruturas utilizadas pelos mtodos do servio,at que todas as estruturas utilizadas sejam processadas. Quando da validao de estruturas complexas, caso a mesma tenha passado por todas as interpretaes cabiveis de uma estrutura, porm seu nome interno no foi declarado, o WSDL considerado invlido, e o processo de gerao abortado com a mensagem acima, identificando o parmetro de origem da mesma em [PARAM].

WSCERR039 / Unexpected DumpType [X]


Reviso: 28/04/2004 Abrangncia Verso 7.10 WSCERR039 / Unexpected DumpType [X] Quando da utilizao da funo XMLDataSet, para a interpretao de um objeto de retorno XML em formato DataSet, caso no seja passado um objeto Advpl de tipo vlido ( Objeto XML ou Array ), o processamento abortado, mostrando a mensagem acima, identificando o tipo de parmetro recebido em [X] Verifique o cdigo-fonte da aplicao e ceritifuque-se de sempre passar um Objeto XML ou Array para a funo XMLDataSet() Verso 8.11

WSCERR040 / Unexpected SCHEMA Type [X]


Reviso: 28/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR040 / Unexpected SCHEMA Type [X] Quando da utilizao da funo XMLDataSchema, para determinar os dados recebidos por um retorno de um Web Service que retorna uma referncia ao Schema, e no seja passado a funo um Objeto Advpl de Tipo Vlido ( Objeto Xml ou Array ), o processamento abortado, mostrando a mensagem acima, identificando o tipo de parmetro recebido em [X] Verifique o cdigo-fonte da aplicao e ceritifuque-se de sempre passar um Objeto XML ou Array para a funo XMLDataSchema()

WSCERR041 / [NOTNIL_MESSAGE]
Reviso: 28/04/2004 Abrangncia Verso 7.10 WSCERR041 / [NOTNIL_MESSAGE] Esta ocorrncia reproduzida, quando da utilizao de um fonte Client de WebServices, no momento que o client est desmontando o pacote SOAP retornado pelo servio. Durante a desmontagem do pacote de retorno de um Web Service, caso algum parmetro obrigatrio do servio no esteja presente no pacote de retorno, o processamento abortado com a mensagem acima, identificando em [NOTNIL_MESSAGE] o parmetro / propriedade que no veio preenchida. Esta ocorrncia capturada pelo prprio fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F. (falso), e a descrio da ocorrncia deve ser recuperada atravps da funo GetWSCError() Verso 8.11

WSCERR042 / URL LOCATION no especificada.


Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR042 / URL LOCATION no especificada. Esta ocorrncia reproduzida, quando da utilizao de um fonte Client de WebServices, antes do envio do pacote SOAP com o(s) parmetro(s) d ao / mtodo solicitado. No momento de postar o pacote SOAP de parmetros para um Web Service, verificada a propriedade reservada _URL do objeto do Servio, que contm a URL para postagem do pacote ao servidor. Caso a mesma esteja vazia, o processamento abortado com a mensagem acima, antes da postagem dos dados. Esta ocorrncia capturada pelo prprio fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F. (falso), e a descrio da ocorrncia deve ser recuperada atravps da funo GetWSCError() Verifique o cdigo-fonte, e certifique-se que, caso a propriedade _URL esteja sendo redefinida, a mesma no esteja vazia. Esta propriedade j alimentada automaticamente pelo engine client de webservices, de acordo com as informaes para postagem obtidas no WSDL utilizado para a gerao do fonte client.

WSCERR043 / [SOAP_STYLE] SOAPSTYLE Desconhecido.


Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR043 / [SOAP_STYLE] SOAPSTYLE Desconhecido. Esta ocorrncia reproduzida, quando da utilizao de um fonte Client de WebServices, antes do envio do pacote SOAP com o(s) parmetro(s) da ao / mtodo solicitado. No momento de postar o pacote SOAP de parmetros para um Web Service, verificado o formato do pacote SOAP a ser enviado o client. Esta propriedade definida em fonte, no momento da gerao do fonte-client, e no deve ser alterada. Caso a mesma seja alterada manualmente, e no esteja num formato vlido, o processamento abortado com a mensagem acima, antes da postagem dos dados, indicando em [SOAP_STYLE] o soap style invlido informado.. Esta ocorrncia capturada pelo prprio fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F. (falso), e a descrio da ocorrncia deve ser recuperada atravps da funo GetWSCError() Verifique o cdigo-fonte, e certifique-se que o mesmo no foi alterado automaticamente pelo engine client de webservices, de acordo com as informaes para postagem obtidas no WSDL utilizado para a gerao do fonte client.

WSCERR044 / No foi possvel POST : URL [URP_POST]


Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR044 / No foi possvel POST : URL [URP_POST] Esta ocorrncia reproduzida, quando da utilizao de um fonte Client de WebServices, ao enviar o pacote SOAP com o(s) parmetro(s) da ao / mtodo solicitado. Aps montado o pacote de envio para a solicitao de processamento do servio, o pacote postado no servidor indicado na URL especfiicada no servio. Caso o servidor de destino do pacote no seja localizado no DNS, ou no esteja no ar, o processamento abortado com a mensagem acima, e a url de destino especifiacada em [URL_POST] Esta ocorrncia capturada pelo prprio fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F. (falso), e a descrio da ocorrncia deve ser recuperada atravps da funo GetWSCError()

WSCERR045 / Retorno VAZIO de POST : URL <URL> ...


Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR045 / Retorno VAZIO de POST : URL <URL> [HEADER_RET] Esta ocorrncia reproduzida, quando da utilizao de um fonte Client de WebServices, ao enviar o pacote SOAP com o(s) parmetro(s) d ao / mtodo solicitado. Apos montado o pacote de envio para a solicitao de processamento do servio, o pacote enviado a url discriminada no servio. Diferentemente da ocorrncia WSCERR014, esta ocorrncia pode ser reproduzida quando o servidor de WebServices que atendeu requisio foi localizado, a requisio foi feita com sucesso, porm o servidor Protheus recebeu como retorno um pacote HTTP incompleto ou invlido, ou ocorreu um erro interno no servidor, referenciado no header do pacote HTTP; nestes casos o processamento abortado com a ocorrncia acima, informando em <URL> o endereo do servidor onde o dado foi postado, e, se disponvel, em HEADER_RET informado o contedo do Header de Retorno do HTTP. Esta ocorrncia capturada pelo prprio fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F. (falso), e a descrio da ocorrncia deve ser recuperada atravps da funo GetWSCError()

WSCERR046 / XML Warning [XML_WARNING] ( POST em ..


Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR046 / XML Warning [XML_WARNING] ( POST em <URL> ) Esta ocorrncia reproduzida, quando da utilizao de um fonte Client de WebServices, ao processar o pacote SOAP recebido como retorno da ao / mtodo solicitado. Apos montado e enviado o pacote de envio para a solicitao de processamento do servio, o pacote SOAP retornado pelo servio analizado para a alimentao dos parmetros Advpl . Caso seja detectada alguma inconsistncia, considerada pelo parser interno de xml do Protheus como uma advertncia (warning), no documento XML, o pacote SOAP de retorno considerado invlido, e o processamento abortado com esta ocorrncia, informando em XML_WARNING a mensagem de advertncia do parser interno; e em <URL> o servidor de WebServices que retornou o pacote. Esta ocorrncia capturada pelo prprio fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F. (falso), e a descrio da ocorrncia deve ser recuperada atravps da funo GetWSCError()

WSCERR047 / XML Error [XML_ERROR] ( POST em ...


Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR047 / XML Error [XML_ERROR] ( POST em <URL> ) Esta ocorrncia reproduzida, quando da utilizao de um fonte Client de WebServices, ao processar o pacote SOAP recebido como retorno da ao / mtodo solicitado. Apos montado e enviado o pacote de envio para a solicitao de processamento do servio, o pacote SOAP retornado pelo servio analizado para a alimentao dos parmetros Advpl . Caso seja detectada alguma inconsistncia, considerada pelo parser interno de xml do Protheus, como um erro de sintaxe no XML, o pacote SOAP de retorno considerado invlido, e o processamento abortado com esta ocorrncia, informando em XML_ERROR a mensagem de erro do parser interno; e em <URL> o servidor de WebServices que retornou o pacote. Esta ocorrncia capturada pelo prprio fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F. (falso), e a descrio da ocorrncia deve ser recuperada atravps da funo GetWSCError(). Veja maiores detalhes na funo GetWSCError(), pois ela oferece a possibilidade de recuperar os elementos principais de retorno de um pacote SOAP_FAULT isoladamente.

WSCERR048 / SOAP FAULT [FAULT_CODE] ( POST em ...


Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR048 / SOAP FAULT [FAULT_CODE] ( POST em <URL> ) : [FAULT_STRING] Esta ocorrncia reproduzida, quando da utilizao de um fonte Client de WebServices, ao processar o pacote SOAP recebido como retorno da ao / mtodo solicitado. Ao analizar o pacote SOAP retornado pelo servio, para a alimentao dos parmetros Advpl, caso o pacote de retorno contenha uma excesso do tipo SOAP FAULT, isto indica que houve uma falha de processamento do servio no servidor. O processamento abortado com esta ocorrncia, informando em [FAULT_CODE] o cdigo da excesso SOAP, em <URL> o servidor de WebServices que retornou o pacote, e em FAULT_STRING maiores detalhes sobre a ocorrncia. Esta ocorrncia capturada pelo prprio fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F. (falso), e a descrio da ocorrncia deve ser recuperada atravps da funo GetWSCError()

WSCERR049 / SOAP RESPONSE (RPC) NOT FOUND.


Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR049 / SOAP RESPONSE (RPC) NOT FOUND. Esta ocorrncia reproduzida, quando da utilizao de um fonte Client de WebServices, ao processar o pacote SOAP recebido como retorno da ao / mtodo solicitado. Ao analizar o pacote SOAP retornado pelo servio, para a alimentao dos parmetros Advpl, caso o servio utilize um soapStyle = RPC, e o node de resposta no seja encontrado no pacote, o pacote de resposta considerado invlido, e o processamento abortado com a mensagem acima. Esta ocorrncia capturada pelo prprio fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F. (falso), e a descrio da ocorrncia deve ser recuperada atravs da funo GetWSCError()

WSCERR050 / SOAP RESPONSE REF <NODE_REF> (RPC) ...


Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR050 / SOAP RESPONSE REF <NODE_REF> (RPC) NOT FOUND. Esta ocorrncia reproduzida, quando da utilizao de um fonte Client de WebServices, ao processar o pacote SOAP recebido como retorno da ao / mtodo solicitado. Ao analizar o pacote SOAP retornado pelo servio, para a alimentao dos parmetros Advpl, caso o servio utilize um soapStyle = RPC, e o node de resposta aponte para un outro node via referncia, e este novo node no seja encontrado no pacote, o pacote considerado invlido e o processamento abortado com a mensagem acima, mostrando o identificador de referncia nao encontrado em <NODE_REF> Esta ocorrncia capturada pelo prprio fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F. (falso), e a descrio da ocorrncia deve ser recuperada atravs da funo GetWSCError()

WSCERR051 / SOAP RESPONSE RETURN (RPC) NOT FOUND.


Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR051 / SOAP RESPONSE RETURN (RPC) NOT FOUND. Esta ocorrncia reproduzida, quando da utilizao de um fonte Client de WebServices, ao processar o pacote SOAP recebido como retorno da ao / mtodo solicitado. Ao analizar o pacote SOAP retornado pelo servio, para a alimentao dos parmetros Advpl, caso o servio utilize um soapStyle = RPC, e o node de retorno no aponte para nenhuma referncia, o retorno deve estar dentro do XML, no nvel do node de resposta . Caso o node de retorno no seja encontrado neste nvel, o pacote de retorno considerado invlido, e o processamento abortado com a mensagem acima . Esta ocorrncia capturada pelo prprio fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F. (falso), e a descrio da ocorrncia deve ser recuperada atravs da funo GetWSCError()

WSCERR052 / Enumeration FAILED on [STRUCT_TYPE]


Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR052 / Enumeration FAILED on [STRUCT_TYPE] Esta ocorrncia reproduzida, quando da utilizao de um fonte Client de WebServices, antes do envio do pacote SOAP com o(s) parmetro(s) da ao / mtodo solicitado. Antes da montagem do pacote SOAP, os parmetros do mtodo / aco solicitada do servio so analizados e validados. Caso um parmetro contiver uma definio de enumeration, obtida no WSDL, e for alimentado pelo fonte client com um valor que no conste na lista de parmetros vlidos, o processamento abortado com a mensagem acima, identificando o parmetro envolvido em [STRUCT_TYPE] Esta ocorrncia capturada pelo prprio fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F. (falso), e a descrio da ocorrncia deve ser recuperada atravps da funo GetWSCError() Verifique o cdigo-fonte client gerado em advpl, para obter a lista de parmetros vlido; e certifique-se que o parmetro especificado est alimentado de forma correta.

WSCERR053 / WSRPCGetNode (Object) not found.


Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR053 / WSRPCGetNode (Object) not found. Esta ocorrncia reproduzida, quando da utilizao de um fonte Client de WebServices, ao processar o pacote SOAP recebido como retorno da ao / mtodo solicitado. Ao analizar o pacote SOAP retornado pelo servio, para a alimentao dos parmetros Advpl, caso o servio utilize um soapStyle = RPC, no momento de anlise de um retorno de uma estrutura complexa, caso o node correspondente a estrutura no seja localizado no pacote de retorno, o mesmo considerado invlido, e o processamento abortado com a mensagem acima. Esta ocorrncia capturada pelo prprio fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F. (falso), e a descrio da ocorrncia deve ser recuperada atravs da funo GetWSCError()

WSCERR054 / Binding SOAP no localizado no WSDL.


Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR054 / Binding SOAP no localizado no WSDL. Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. Durante a gerao do fonte, uma vez identificado o servio, o gerador de cdigo procura a declarao das amarraes do servio (BINDINGS) no WSDL. Dentre as amarraes encontradas, apenas so processadas aquelas que especificam o transporte de dados para o servio no formato SOAP. Caso no exista nenhuma amarrao no servio, que especifique a utilizao do SOAP, o processo de gerao do fonte client abortado, retornando esta ocorrncia . A infraestrutura Client de WebServices do Protheus no suporta a gerao de fontes-client de servios que no utilizem pacotes XML - SOAP para a troca de informaes.

WSCERR055 / Invalid Property Type (X) for [PARAM]


Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR055 / Invalid Property Type (X) for [PARAM] (Y) Esta ocorrncia reproduzida, quando da utilizao de um fonte Client de WebServices, antes do envio do pacote SOAP com o(s) parmetro(s) da ao / mtodo solicitado. Antes da montagem do pacote SOAP, os parmetros do mtodo / ao solicitada do servio so analizados e validados. As propriedades da classe, utilizadas como parmetros, devem ser alimentadas com os tipos Advpl apropriados, de acordo com sua definio. Caso uma determinada propriedade [PARAM] do objeto 'Client' do servio esteja alimentada com um tipo de dado Advpl [X] , porm o tipo esperado era [Y], o processamento abortado com a ocorrncia de erro acima. Esta ocorrncia capturada pelo prprio fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F. (falso), e a descrio da ocorrncia deve ser recuperada atravps da funo GetWSCError() Verifique o cdigo-fonte client gerado em advpl, e certifique-se que o parmetro especificado est sendo alimentado de forma correta, com o tipo apropriado.

WSCERR056 / Invalid XML-Soap Server Response : ...


Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR056 / Invalid XML-Soap Server Response : soap-envelope not found. Esta ocorrncia reproduzida, quando da utilizao de um fonte Client de WebServices, ao iniciar o processamento do pacote SOAP recebido como retorno da ao / mtodo solicitado. Ao analizar o pacote SOAP retornado pelo servio, caso o mesmo no contenha um envelope ( soap-Envelope ) de resposta, o retorno considerado invpalido, e o processamento abortado com a mensagem acima . Esta ocorrncia capturada pelo prprio fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F. (falso), e a descrio da ocorrncia deve ser recuperada atravs da funo GetWSCError()

WSCERR057 / Invalid XML-Soap Server Response : ...


Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR057 / Invalid XML-Soap Server Response : soap-envelope empty. Esta ocorrncia reproduzida, quando da utilizao de um fonte Client de WebServices, ao iniciar o processamento do pacote SOAP recebido como retorno da ao / mtodo solicitado. Ao analizar o pacote SOAP retornado pelo servio, caso no seja possvel determinar o prefixo do SOAP Envelope utilizado, o retorno considerado invlido, e o processamento abortado com a mensagem acima . Esta ocorrncia capturada pelo prprio fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F. (falso), e a descrio da ocorrncia deve ser recuperada atravs da funo GetWSCError()

WSCERR058 / Invalid XML-Soap Server Response : ...


Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR058 / Invalid XML-Soap Server Response : Invalid soap-envelope [SOAP_ENV] object as valtype [X] Esta ocorrncia reproduzida, quando da utilizao de um fonte Client de WebServices, ao iniciar o processamento do pacote SOAP recebido como retorno da ao / mtodo solicitado. Ao analizar o pacote SOAP retornado pelo servio, caso o soap-envelope determinado [SOAP_ENV], esperado como um Objeto, foi recebido com um tipo Advpl [X]. Isto invalida o pacote soap recebido, sendo o processamento abortado com a ocorrncia acima. Esta ocorrncia capturada pelo prprio fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F. (falso), e a descrio da ocorrncia deve ser recuperada atravs da funo GetWSCError()

WSCERR059 / Invalid XML-Soap Server Response : ...


Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR059 / Invalid XML-Soap Server Response : soap-body not found. Esta ocorrncia reproduzida, quando da utilizao de um fonte Client de WebServices, ao iniciar o processamento do pacote SOAP recebido como retorno da ao / mtodo solicitado. Semelhante a ocorrncia WSCERR056, esta ocorrncia indica que no foi possvel deterrminar o corpo (soap-body) do pacote SOAP retornado pelo servio; o que invalida o pacote de retorno, sendo o processamento abortado com esta ocorrncia de erro. Esta ocorrncia capturada pelo prprio fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F. (falso), e a descrio da ocorrncia deve ser recuperada atravs da funo GetWSCError()

WSCERR060 / Invalid XML-Soap Server Response : ...


Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR060 / Invalid XML-Soap Server Response : soap-body envelope empty. Esta ocorrncia reproduzida, quando da utilizao de um fonte Client de WebServices, ao iniciar o processamento do pacote SOAP recebido como retorno da ao / mtodo solicitado. Semelhante a ocorrncia WSCERR057, esta ocorrncia indica que pacote SOAP retornado, no foi possvel determinar o prefixo do corop (soap-body) utilizado; o que invalida o pacote de retorno, sendo o processamento abortado com esta ocorrncia de erro. Esta ocorrncia capturada pelo prprio fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F. (falso), e a descrio da ocorrncia deve ser recuperada atravs da funo GetWSCError()

WSCERR061 / Invalid XML-Soap Server Response : ...


Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR061 / Invalid XML-Soap Server Response : Invalid soap-body [BODY] object as valtype [TYPE] Esta ocorrncia reproduzida, quando da utilizao de um fonte Client de WebServices, ao iniciar o processamento do pacote SOAP recebido como retorno da ao / mtodo solicitado. Semelhante a ocorrncia WSCERR058, esta ocorrncia indica que no SOAP retornado, o corpo (soap-body) determinado [BODY], esperado como um Objeto, foi recebido como um tipo Advpl [TYPE], ; o que invalida o pacote de retorno, sendo o processamento abortado com esta ocorrncia de erro. Esta ocorrncia capturada pelo prprio fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F. (falso), e a descrio da ocorrncia deve ser recuperada atravs da funo GetWSCError()

WSCERR062 / Invalid XML-Soap Server Response : ...


Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR062 / Invalid XML-Soap Server Response : Unable to determine Soap Prefix of Envelope [SOAP_ENV] Esta ocorrncia reproduzida, quando da utilizao de um fonte Client de WebServices, ao iniciar o processamento do pacote SOAP recebido como retorno da ao / mtodo solicitado. Esta ocorrncia indica que, no SOAP retornado, o envelope (soap-envelope) determinado [SOAP_ENV], no est em um formato que seja possvel determinar o nome do envelope; o que invalida o pacote de retorno, sendo o processamento abortado com esta ocorrncia de erro. Esta ocorrncia capturada pelo prprio fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F. (falso), e a descrio da ocorrncia deve ser recuperada atravs da funo GetWSCError()

WSCERR063 / Argument error : Missing field [NODE]


Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR063 / Argument error : Missing field [NODE] as [TYPE] Esta ocorrncia reproduzida, quando da utilizao de um fonte Client de WebServices, ao iniciar a montagem do pacote SOAP com os parmetros para a chamada do servio. Esta ocorrncia indica que, o parmetro obrigattio determinado em [NODE], com o tipo [TYPE], no foi alimentado para a chamada da funo client. Esta ocorrncia invalida a montagem do pacote de envio, abortando o processamento antes do envio do pacote, com esta ocorrncia. Esta ocorrncia capturada pelo prprio fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F. (falso), e a descrio da ocorrncia deve ser recuperada atravs da funo GetWSCError()

WSCERR064 / Invalid Content-Type return (HTTP_HEAD


Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR064 / Invalid Content-Type return (HTTP_HEAD) from <URL> Esta ocorrncia reproduzida, quando da utilizao de um fonte Client de WebServices, ao processar o pacote SOAP recebido como retorno da ao / mtodo solicitado. Aps montado e enviado o pacote de envio para a solicitao de processamento do servio, o pacote SOAP retornado pelo servio analizado para a alimentao dos parmetros Advpl . Esta ocorrncia indica que, o header HTTP de retorno do servio, postado em <URL>, veio com o contedo do header HTTP retornado pelo servidor, indica o uso de contenttype diferente de XML, o que invalida o processamento do retorno. Um Web Service client sempre espera por um pacote de retorno com um 'Content-type: text/xml' de um Web Services SERVER. Esta ocorrncia capturada pelo prprio fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F. (falso), e a descrio da ocorrncia deve ser recuperada atravs da funo GetWSCError() Esta ocorrncia normalmente reproduzida, quando um determinado WebService no est mais publicado no endere especificado, porm a url ainda vlida. De modo que, ao receber a requisio, o servidor devolve uma pgina HTML, com uma mensagem do tipo 'Page not Found'.

WSCERR065 / EMPTY Content-Type return (HEADER) ...


Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR065 / EMPTY Content-Type return (HEADER) from <URL> Esta ocorrncia reproduzida, quando da utilizao de um fonte Client de WebServices, ao processar o pacote SOAP recebido como retorno da ao / mtodo solicitado. Semelhante a ocorrncia WSCERR064, esta ocorrncia indica que, aps a postagem de um pacote SOAP ao servidor de destino do WebService, em <URL>, o contedo do header Http retornado (HEADER) retornado pelo servidor, no possua a identificao do Content-Type, o que invalida o processamento de retorno. O client Advpl sempre espera por um pacote de resposta com um content-type: text/xml como retorno. Esta ocorrncia capturada pelo prprio fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F. (falso), e a descrio da ocorrncia deve ser recuperada atravs da funo GetWSCError()

WSCERR066 / Invalid INVALID WSDL Content-Type (...


Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR066 / Invalid INVALID WSDL Content-Type (HTTP_HEAD) from <URL> Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. Esta ocorrncia indica que, o header HTTP de retorno da requisio do WSDL, solicitado no endereo <URL>, veio identificando um tipo de documento (content-type) diferente de textp/plain ou text/xml, o que invalida o processamento do retorno. Um Web Service client sempre espera por um pacote de retorno com um 'Content-type: text/xml' ou 'text/plain', de um Web Services SERVER. Esta ocorrncia normalmente reproduzida, quando um determinado WebService no est mais publicado no endereo especificado, porm o servio de http ainda est ativo no servidor solicitado. De modo que, ao receber a requisio, o servidor devolve uma pgina HTML, com uma mensagem do tipo 'Page not Found'.

WSCERR067 / EMPTY WSDL ContentType (HTTP_HEAD)


Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR067 / EMPTY WSDL Content-Type (HTTP_HEAD) from <URL> Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. Esta ocorrncia indica que, o header HTTP de retorno do WSDL, solicitado atravs do link <URL>, veio com o contedo do header HTTP sem a informao do tipo de contedo do documento (content-type). Um documento WSDL deve ser retornado pelo servidor de WebServices, informando no header HTTP um tipo de documento (contenttype) definido como text/plain ou text/xml

WSCERR068 / NOT XML SOURCE from <URL>


Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR068 / NOT XML SOURCE from <URL> Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. Esta ocorrncia indica que, o documento retornado pelo servidor de webservices no se trata de um XML vlido para ser analizado. O documento WSDL deve sempre iniciar com o node da declarao do XML ( <?XML ...) . Caso no possua esta informao, o primeiro node deve obrigatoriamente ser a definio do servio ( <DEFINITIONS ). Se o documento WSDL retornado no atender estes requisitos, o processamento abortado com a mensagem acima.

WSCERR069 / BYREF [PARAM] WITH NO INPUT ARGUMENT :


Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR069 / BYREF [PARAM] WITH NO INPUT ARGUMENT : UNSUPPORTED WEBSERVICE Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. Quando da gerao do fonte, caso o WSDL retornado informe um mtodo de Web Services, que possua mais de um parmetro de retorno, isto caracteriza um mtodo que trabalha com parmetros por referncia (BYREF). Neste caso, aps o cruzamento dos retornos do mtodo com os parmetros, deve restar no mximo um retorno. Caso mesmo assim, reste mais de um retorno, o WSDL considerado invlido, sendo o processo de gerao abortado com a mensagem de erro acima, informando em [PARAM] o retorno excedente, que deveria ser localizado nos parmetros.

WSCERR070 / Requisio HTTPS no suportada neste..


Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR070 / Requisio HTTPS no suportada neste BUILD [PROTHEUS_BUILD] Esta ocorrncia reproduzida, quando da utilizao de um fonte Client de WebServices, antes do envio do pacote SOAP com o(s) parmetro(s) da ao / mtodo solicitado. No momento de postar o pacote SOAP de parmetros para um Web Service, verificado se o protocolo em uso o HTTPS; e se o mesmo j suportado pelo Build atual do servidor Protheus em uso. Esta ocorrncia capturada pelo prprio fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F. (falso), e a descrio da ocorrncia deve ser recuperada atravps da funo GetWSCError() Verifique o cdigo-fonte, e certifique-se que, caso a propriedade _URL esteja sendo redefinida, a mesma no esteja sendo redefinida para um endere utilizando HTTPS. Caso a propriedade _URL no esteja sendo re-definida, e o servio solicitado exiga o envio dos dados atravs de HTTPS, o build do servidor Protheus deve ser atualizado.

WSCERR071 / INVALID HTTP HEADER (HTTPHEAD) from...


Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR071 / INVALID HTTP HEADER (HTTPHEAD) from <URL> Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. Quando da gerao de Cdigos fonte Advpl, caso o servidor informado, acessado via URL, retorne um pacote HTTP, com um header de retorno que no seja identificado como HTTP, o processo de gerao abortado com a ocorrncia acima, informando em <httphead> o header informado, e em <url> o endereo informado para a solicitao do WSDL. Dentre as possveis causas, podemos considerar que a URL informada no corresponde a um servidor HTTP ou de WEB SERVICES. Para certiticar-se da ocorrncia, abra a URL especificada utilizando um Web Browser.

WSCERR072 / HTTP REQUEST ERROR (HEADER) from <URL>


Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR072 / HTTP REQUEST ERROR (HEADER) from <URL> Esta ocorrncia de erro reproduzida, quando da gerao de um fonte de WebServices 'Client', utilizando o Protheus IDE. Quando da gerao de Cdigos fonte Advpl, caso o servidor informado, acessado via URL, retorne um pacote HTTP, com um header de retorno HTTP, porm com um satus diferente de 200 (OK) , o processo de gerao abortado com a ocorrncia acima, informando em <HEADER> a primeira linha do cabealho HTTP retornado, e em <url> o endereo informado para a solicitao do WSDL. Dentre as provveis causas, podemos considerar os status de retorno '403 Forbidden', retornados por Proxys que requerem autentizao ou no permitem o acesso url especificada, o '500 Internal Server Error', que indica uma ocorrncia interna de erro no servidor, que impossibilitou o retorno do WSDL.

WSCERR073 / Build (BUILD) XML Internal Error


Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERR073 / Build (BUILD) XML Internal Error Esta ocorrncia reproduzida, quando da utilizao de um fonte Client de WebServices, ao processar o pacote SOAP recebido como retorno da ao / mtodo solicitado. O pacote SOAP retornado pelo servio analizado para a alimentao dos parmetros Advpl. em primeiro momento, so realizadas as consistncias de cabeaho de protocolo (header) , e em seguida o pacote SOAP desmontado por um parser interno do Protheus, onde verificada a sintaxe do documento XML ( Veja ocorrncias WSCERR046 e WSCERR047 ), e a resultante deste processo ser um objeto intermedirio. Se e somente se, o contedo SOAP retornado pelo servio, contenha um erro estrutural ou sinttico, que no seja detectado pelo parser interno como um erro ou advertncia, este objeto intermedirio no gerado, o que impossibilita a rotina de prosseguir o processamento. Esta ocorrncia j foi reproduzida anteriormente, em builds do Protheus anteriores Dezembro/2003. Em releases posteriores a este, o tratamento dos pacotes de retorno do servio foi revisado; desde ento esta ocorrncia no mais foi reproduzida. Esta ocorrncia capturada pelo prprio fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F. (falso), e a descrio da ocorrncia deve ser recuperada atravps da funo GetWSCError()

WSCERRINT / [ERROR_DESCRIPTION]
Reviso: 29/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSCERRINT / [ERROR_DESCRIPTION] Quando executado um mtodo 'Client' de WebServices, as ocorrncias de falha dentro destas worinas so protegidas por um tratamento de erro exclusivo, que informa detalhes da ocorrncia. Se, e somente se, o tratamento de erro for acionado por uma ocorrncia inesperada, em algum ponto do processamento do mtodo da classe Client, a descrio da ocorrncia de erro capturada, e mostrada em <ERROR_DESCRIPTION> , e a ocorrncia prefixada com o cdigo WSCERRINT ( Web Services Client Internal Error ) Caso seja reproduzida esta ocorrncia, verifique os parmetros informados o mtodo chamado, e certifique-se que o cdigo fonte da classe 'Client' em Advpl no sofreu nenhuma alterao manual, aps a gerao do prprio.

Terminologias / Glossrio
Reviso: 28/04/2004 Abrangncia Verso 7.10 Verso 8.11

WSDL : ( Web Services Description Language ) : Trata-se de um documento, em formato de acordo com as definies de Web Services, atravs do qual um provedor de um servio prov a discriminao detalhada das funcionalidades de um servio. Este documento em geral fornecido atravs de uma URL, apontando para o servidor que prov o servio. Utilizando este documento, o Protheus capaz de gerar automaticamente um 'Fonte Client' para estabelecer a conexo e utilizao do servio, atravs da gerao de uma classe 'Client' em Advpl. Web Service 'Client' : Aplicao desenvolvida partir de uma definio (WSDL) publicada e disponibilizada por uma aplicao 'Server'. Web Service 'Server' : Aplicao desenvolvida para tornar disponvel um recurso, processamento ou informao, juntamente com sua definio (WSDL), para tornar possvel o desenvolvimento de uma aplicao 'Cliente' que ir solicitar a execuo da aplicao em si. 'Fonte Client' : Cdigo fonte Advpl, gerado pela ferramenta do IDE 'Gerar Cliente WebServices...', a partir de uma definio WSDL publicada em um servidor HTTP ou disponibilizada em um arquivo .WSDL. 'Tipo bsico' : So chamados de tipos bsicos, uma lista de tipos de informaes 'nativa' ,implementada na definio dos WebServices. 'Estrutura' : chamada de estrutura, uma classe intermediria de dados para Web Services, cuja funo definir uma informao que consiste no agrupamento de outras informaes e/ou estruturas.

Você também pode gostar