Você está na página 1de 46

Web Services com o ERP Microsiga Protheus

Contedo da TOTVS Developer Network revisado em 21/05/2012 que abrange as verses 10 e 11


Organizado por Armando Lima.

O ERP Microsiga Protheus, a partir da verso AP7, possui ferramentas nativas e integradas com a LIB de
infraestrutura 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 Client, respectivamente.
Nos tpicos Guia de referncia dos comandos AdvPL, da linguagem AdvPL, e Funes de WebServices, do
Framework Microsiga Protheus, so abordadas respectivamente as diretivas e funes da LIB de infraestrutura do ERP
disponibilizadas para o desenvolvimento de ambas as aplicaes Cliente e Server.
No tpico Exemplos AdvPL, so apresentados os exemplos de uso das funes e comandos.

Web Services 'Server'

01. Web Services 'Server' - Configurao

Um Web Services em AdvPL utiliza-se de working threads para atender as solicitaes de processamento atravs do
protocolo HTTP.
Para isso, existem duas maneiras de habilitar um Web Services:
Atravs da criao da seo [WebServices], no arquivo de configurao (appserver.ini), do TOTVS |
Application Server.
Configurao manual de um ambiente working threads extended (WEBEX), no arquivo de configurao
(appserver.ini), do TOTVS | Application Server.
A diferena entre ambas que a segunda opo permite especificar mais detalhes do ambiente de execuo do
servio, configurar os servios de Web Sites simultaneamente e o atendimento diferenciado do processamento para mais
de um host e diretrios virtuais.
Importante: Se estiver utilizando o produto Microsiga Protheus 8.11, deve-se utilizar o assistente de configurao do
servidor Microsiga Protheus - MP8WIZARD, para instalar e configurar o ambiente de Web Services.
A seguir, observe um exemplo de como configurar o servidor TOTVS | Application Server para Web Services, utilizando
a seo [WebServices].
Observao: Esta configurao exige que a seo [HTTP] no esteja configurada no TOTVS | Application Server. Pois, essa
configurao ir internamente habilitar o servio de HTTP e configurar o processo de resposta para o Web Services.
Exemplo (Configuraes do arquivo appserver.ini)
[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 (padro=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 (padro=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 'padro', utilizado pelo(s) servio(s)
compilado(s) sem a definio de 'NameSpace'. (Padro=host atualmente utilizado).
URLLocation=http://localhost (Opcional) - Permite especificar a URL responsvel pelo atendimento s solicitaes de
processamento do(s) servio(s) (padro=host atualmente utilizado).

No entanto, possvel configurar o Web Service manualmente. Para isso, deve-se inicialmente habilitar o servio de HTTP,
do servidor Microsiga Protheus, configurar um processo WEBEX apontando para funes internas de processamento
dos Web Services e configurar um host atravs do qual as requisies de processamento sero atendidas.

Exemplo (Configurao do protocolo)
[HTTP]
Enable=1 (Obrigatrio) - Indica se o service est habilitado (1) ou no (0).
Port=80 (Obrigatrio) - Indica qual a porta que ser utilizada pelo service.
Path=c:\P10\Http Configurao do host da estao
localDefaultpage=wsindex.apw (Obrigatrio) - Indica a pgina inicial que ser exibida aps a configurao do service. Essa
pgina apresenta todos os WebServices habilitados e no habilitados.Ela s exibida se todas as configuraes foram
efetuadas com sucesso.
ResponseJob=WSTeste Configurao do job para atender aos Web Services.
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 Microsiga Protheus que ir atender aos Web
Services.
Instances=2.5 (Obrigatrio) - Indica qual a quantidade mnima (padro) 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 (padro=0:desabilitado). Utilizado
APENAS para depurao, em casos especficos, pois prejudica significativamente a performance do(s) servio(s).
Trace=1 (Opcional) - Habilita a gravao de um arquivo de log (wsstrace.log), contendo as informaes sobre todas as
chamadas e status do Web Services (padro=0).
PrepareIn=01,01 (Obrigatrio) - Permite especificar qual 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 'padro', utilizado pelo(s) servio(s)
compilado(s) sem a definio de 'NameSpace'. (padro=host atualmente utilizado).
URLLocation=http://localhost/ (Opcional) - Permite especificar a URL responsvel pelo atendimento s solicitaes de
processamento do(s) servio(s) (padro=host atualmente utilizado).

Observao: Note que a porta utilizada no exemplo acima foi a 80, a porta mais genrica de todas. Por isso no foi
necessrio inclu-la nos URLs de localhost. Se fosse utilizada a porta 81, ento a URL seria localhost:81.

Release 12/08/2010
Foram criados mais dois parmetros de registro de log de profiler de execuo de processos, para auxiliar na
identificao de ocorrncias de performance no processamento de requisies, parmetro PROFILE (padro=0) e
PROFILETIMER (padro=2). Tais parmetros so considerados a partir da atualizao da LIB/Framework AdvPL, AdvPL WSDL
Server 1.100812, e da atualizao do TOTVS | Application Server com build igual ou superior a 7.00.090818P. Para registro
detalhado das chamadas de funo por requisio, deve-se atualizar o TOTVS | Application Server para a build igual ou
superior a 7.00.100812P. Ao habilitar o parmetro PROFILE=1, na configurao do job de Web Services, a partir da prxima
requisio recebida para processamento por qualquer working thread deste job, caso a mesma permanea em
processamento mais tempo em segundos do que o configurado no parmetro PROFILETIMER (padro=2), ser criada uma
pasta chamada WSPROFILER, a partir do RootPath do ambiente em execuo, e dentro dela ser criado um arquivo
dinamicamente, contendo todos os detalhes de processo chamado e registro de resumo de chamada de funes
executadas por este processo.
WSINDEX - ndice de Servios
Uma vez habilitada a configurao para Web Services, obtemos acesso a uma interface HTTP de consulta ao ndice
de servios publicados. Para tal, basta reiniciar o servidor TOTVS | Application Server aps a configurao ser realizada,
abrir um Web Browser (por exemplo, Internet Explorer), e acessar o link http://<servidor>/wsindex.apw. No caso do
exemplo de configurao acima, informe o endereo http://localhost/wsindex.apw e observe a interface de consulta ao
ndice dos servios. Se estiver utilizando o sistema Microsiga Protheus 10, a tela apresentada ser semelhante ao
exemplo abaixo:

Observe que, na janela acima, so apresentados todos os servios compilados e disponibilizados no repositrio de
objetos em uso no ambiente configurado.
Atravs dessa janela, possvel obter mais detalhes de cada um dos servios compilados. Pois, cada servio ativo
um link para uma pgina que apresentar todos os mtodos do servio com um link do servidor TOTVS | Application Server
que fornecer a descrio do servio (WSDL).
Observe, a seguir, um exemplo com os detalhes do servio CFGTABLE.



Atravs desta janela, possvel obter a descrio do servio WSDL ao clicar no link disponvel em "Descrio do
Servio (WSDL)". Ao clicar neste link,uma nova janela ser apresentada exibindo o documento WSDL do servio.
Alm disso, cada mtodo do servio disponibilizado tambm um link para uma pgina onde so apresentados os
exemplos de pacotes SOAP que esse mtodo especificamente espera para recepo de parmetros e o modelo de retorno
do servio.


Caso, o fonte-client AdvPL do servio, seja gerado e esteja compilado no repositrio atual, a interface de consulta
habilita a funcionalidade de teste do Web Services, atravs da interface HTTP, apresentado no final da tela o boto testar.
Ao clicar nesse boto, ser montada uma tela HTML para que os parmetros do servio sejam preenchidos. Aps o
preencher os parmetros solicitados e submet-los, o pacote de retorno do servio e seu respectivo status so retornados
no browse.

02. Criando um Web Services 'Server' com o sistema Microsiga
Protheus

Uma vez configurado e habilitado os Web Services, no TOTVS | Application Server, deve-se inicialmente determinar
os mtodos aos quais o servio se destina para ento determinar os parmetros e retorno de cada mtodos. Aps
determinar essas informaes, deve-se codificar uma classe especial da linguagem AdvPL, chamada WSService(), que
constituir o servio.
No entanto, antes de iniciar a codificao, expressamente recomendado que sejam lidos todos os artigos do
tpico Aplicaes Server, onde so abordados em detalhes a infraestrutura envolvida com os Web Services, seu
funcionamento e particularidades de comportamento da classe de Web Services.
03. Regras para codificao de um Web Service

Viso Geral
Para codificao de um Web Service, foram criadas na linguagem AdvPL instrues especiais de declarao de
classes, especficas para Web Services, que suportam nome longos no nome da classe, mtodos e propriedades.
A utilizao destes comandos exige a declarao da #include totvswebsrv.ch, no incio do cdigo fonte, como
tambm ateno a alguns pontos e particularidades, comeando pela nomenclatura do servio, estruturas, mtodos e
propriedades.
Caractersticas operacionais do ambiente
muito importante estar atento ao desenvolver os mtodos de Web Services, devido s caractersticas
operacionais do ambiente de Working Threads utilizado pelo Web Service.
Ao executar um mtodo do Web Service, o ambiente ser mantido no ar, aguardando uma nova requisio de
processamento, de qualquer servio ou mtodo de qualquer cliente.
Deste modo, ao desenvolver um servio, no deve-se deixar abertas as queries utilizadas no mtodo, filtros setados
em tabelas principais ou configuraes especficas no-padro do ambiente, realizadas para o processamento de um
mtodo especfico, pois isto pode causar impacto no funcionamento de todos os Web Services compilados e ativos neste
servidor, com efeitos imprevisveis.
Nomenclatura dos servios
O nome de uma classe para Web Service, deve ser iniciada 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 o nome de uma palavra reservada, da linguagem AdvPL, ou ter o nome igual a um tipo
bsico de informao.
Nomenclatura de estruturas
O nome dado a uma estrutura obedece as mesmas regras da nomenclatura de servios. Ou seja, no pode haver
uma estrutura com o mesmo nome de um servio declarado.
Alm disso, importante estar atento ao fato de uma estrutura no estar diretamente ligada ao servio em
questo, de modo que no pode-se compilar duas estruturas de mesmo nome no mesmo repositrio.
Uma estrutura constitui um agrupamento de dados, criado como um comando especial (WSSTRUCT) em AdvPL.
Para isso, deve-se criar de uma estrutura para um servio, quando for necessrio agrupar um conjunto de dados
bsicos e/ou outras estruturas em um nico 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 da 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'

Ao escrever um Web Service 'Server', deve-se especificar o tipo de 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 TOTVS | Application Server, quando da declarao dos parmetros e retorno, os seguintes tipos bsicos:
Tipo Descrio
String Dado AdvPL do tipo string.
Date Dado AdvPL do tipo data.
Integer Dado AdvPL do tipo numrico (apenas nmeros inteiros).
Float Dado AdvPL do tipo numrico (pode conter nmeros 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) CHR(255).

Observao:
Ao declarar uma propriedade como sendo do tipo string, no pode-se especificar a palavra string em letras
maisculas. A palavra STRING, escrita desta maneira, interpretada pelo pr-compilador, do TOTVS | Application
Server, como sendo uma constante, ocasionando erro de sintaxe da compilao do Web Service.
O Tipo de dado Base64Binary tratado automaticamente e de forma transparente no AdvPL, contemplado pelo
tipo de dado "C" Caractere do AdvPL, que permite contedo binrio. Isto signfica que, quando criamos uma classe
Server de Web Services, onde usamos um tipo Base64Binary, o WSDL gerado pelo Server informar o uso deste
tipo de informao, e quando um programa Client enviar um contedo esperado na requisio XML com este tipo
de informao, a aplicao AdvPL j receber o contedo binario equivalente, sem a necessidade explcita de
converso. Isto se aplica tambm s interfaces CLIENT de Web Services : O contedo codificado em Base64Binary
recebido e enviado via protocolo/requisies XML, j chega devidamente convertido para contedo binrio nas
propriedades do Client em AdvPL.
O tipo Base64Binary utilizado quando da necessidade de trafegar, por exemplo, contedos binrios, por exemplo
ima imagem JPEG, GIF, ou outra sequncia de bytes binria, que no devem estar sujeitas a tratamento
de encoding, acentuao, etc. Deve-se atentar ao limite de string do AdvPL. de 1 MB . Um contedo em String, ao
ser convertido para BASE64 pode ficar at 25 % maior. Logo, uma string binria com mais de 760 Kb no ser
suportada para converso em Base64Binary e vice-versa. Lembre-se que o Web Service foi criado originalmente
para requisies curtas, leves e rpidas. Se existe a necessidade de trafego de grandes quantidades de dados
binrios de uma vez, existem protocolos mais interessantes, como o FTP por exemplo.

05. Estruturas - Tipos complexos

Uma estrutura (tambm conhecida por complex type), constitui um comando especial da linguagem AdvPL,
chamado WSSTRUCT, criado especificamente para Web Services. Desta forma, deve-se criar uma estrutura quando tiver a
necessidade de agrupar mais de uma informao, inclundo tipos bsicos e/ou outras estruturas.
Ao criar um servio que dever receber como parmetro um grupo de informaes definidas como, por exemplo,
os dados cadastrais de um cliente, deve-se criar uma estrutura para agrupar esses dados. No entanto, vale ressaltar que, a
declarao de uma estrutura no amarra a mesma ao 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 tenha a ver com o servio ao qual ela pertena, pois no possvel compilar mais de uma estrutura de mesmo
nome no repositrio.
06. Mtodos 'Server' em AdvPL - Caractersticas

Definio
Um mtodo de um Web Service consiste em uma ao que ser disponibilizada no servio. Para isso, 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 Web Service deve, obrigatoriamente, tr uma propriedade de retorno. No faz parte da
especificao de Web Services 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 Web Service deve ser
declarado com um dado da classe (atravs da instruo WSDATA).
Ao escrever um mtodo de um Web Service, e o mesmo receber 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 essas 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 comunicao, validao, montagem e desmontagem
de pacotes.
Ao codificar um mtodo de Web Service existem sempre dois retornos: A propriedade de retorno do mtodo e o
retorno efetivo do mtodo ao final do processamento.
O retorno efetivo do mtodo deve ser um valor booleano: Se verdadeiro (.T.), 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 devolvido, automaticamente, ao client que solicitou a chamada de processamento.
Caso o retorno efetivo do mtodo seja falso (.F.), indica LIB que, por alguma razo tratada no cdigo-fonte do
mtodo, no foi possvel a execuo do mtodo. Neste caso, deve-se especificar, antes do retorno, atravs da funo
SetSoapFault(), a causa da impossibilidade de processamento.

Exemplo

1 WSMETHOD GetDate WSRECEIVE NULLPARAM WSSEND Horario WSSERVICE ServerTimeIf
2 dow(date())=1
3 SetSoapFault('Mtodo no disponvel','Este servio no funciona aos Domingos.')
// Seta um soap_fault, informando que este servio no disponvel aos
domingos
4 Return .F. Endif // e retorna .F., indicando que o servio no foi processado
com sucesso.
5 ::Horario := time() // alimenta a propriedade de retorno
6 Return .T. // E retorna .T. indicando processamento do mtodo com sucesso

Ateno:
Sempre que o retorno efetivo do mtodo verdadeiro (.T.), a propriedade de retorno deve ser preenchida. Caso
no seja preenchida, a LIB retornar ao client solicitante um pacote de SOAP Fault, indicando que houve um erro
no processamento do servio, e registrar um error.log na estao servidora. Alm disso, ser gerado tambm uma
ocorrncia de erro, caso o mtodo retorne verdadeiro (.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 falso (.F.), e
a funo SetSoapFault() no tenha sido chamada, devolvido estao client solicitante do processamento um
Soap:Fault, com a seguinte ocorrncia de erro: <SERVICO> : <METODO> RETURN .F. WITH SOAP FAULT
EXCEPTION EMPTY.

07. Tratamento de erro dos Web Services

Dada a infraestrutura envolvida no processamento dos Web Services, a rotina de tratamento de erro da aplicao
Web Services 'Server' prev o tratamento de ocorrncias, desde advertncia de carga dos servios, falhas de inicializao de
ambiente, passando por erros que invalidam um determinado servio compilado, at as ocorrncias de inconsistncia de
parmetros de chamada do servio, inconsistncia 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 reproduzidas no momento da carga do ambiente de Web Services esto
relacionados no tpico Falhas de Carga dos Servios, e a discriminao da utilizao do Soap Fault est descrita no
tpico Utilizao do Soap Fault.

08. Utilizao do SOAP FAULT

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 execuo do Web Service, quando da ocorrncia de tal, gera
automaticamente um 'SOAP FAULT' com a descrio resumida da ocorrncia ao 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 ao client solicitante.
Para inserir as excees de execuo com SOAP FAULT, em um servio 'Server', deve-se utilizar a funo
SetSoapFaut().
SOAP FAULTS padro do servidor TOTVS | Application Server de Web Services
A camada de comunicao da infraestrutura de Web Service realiza, automaticamente, os tratamentos de
protocolo, formato do pacote SOAP e parmetros obrigatrios. Caso exista alguma inconsistncia na chamada do servio e
incorra em alguma destas excees, o servio solicitado no chamado e o servidor TOTVS | Application Server devolve
automaticamente ao cliente solicitante um SOAP FAULT, indicando o que aconteceu.
Essas ocorrncias de SOAP FAULT so apresentadas no console, do TOTVS | Application Server, e so armazenadas
no arquivo error.log do ambiente utilizado.
SOAP FAULTS padro aps processamento do servio
A camada de comunicao de infraestrutura de Web Services vlida 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
TOTVS | Application Server devolve automaticamente ao client solicitante um SOAP FAULT, indicando que ocorreu um erro
interno no servidor de Web Services.

09. Servio de exemplo SERVERTIME

Inicialmente, o exemplo proposto tem o objetivo de montar um Web Service que retorne o horrio no servidor
Protheus. Para isso, 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 execuo. Porm, ela
ter um retorno: O horrio atual, no formato hh:mm:ss. A especificao de um WebService permite que um servio seja
declarado de modo a no receber nenhum parmetro, mas exige que o Web Service sempre possua um retorno.
Codificando o servio

Para codificar um servio, deve-se utilizar o TOTVS | Development Studio, 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.
Essa numerao utilizada mais abaixo, onde o cdigo fonte exemplo detalhado linha a linha.

1 #INCLUDE TOTVS.CH
2 #INCLUDE TOTVSWEBSRV.CH
3
4 WSSERVICE SERVERTIME
5 WSDATA Horario as String
6 WSMETHOD GetServerTime
7 ENDWSSERVICE
8
9 WSMETHOD GetServerTime WSRECEIVE NULLPARAM WSSEND Horario WSSERVICE SERVERTIME
10 ::Horario := TIME()
11 Return .T.

Linha 1 - especificada a utilizao da include TOTVS.CH, contendo as definies dos comando AdvPL e demais
constantes.
Linha 2 - especificada a include TOTVSWebSrv.CH, que contm as definies de comandos e constantes utilizados
nas declaraes de estruturas e mtodos do Web Services. Ele obrigatrio para o desenvolvimento de Web
Services.
Linha 4 - Com esta instruo, definido o incio da classe do servio principal, ao qual damos o nome de
SERVERTIME.
Linha 5 - Dentro da estrutura deste servio, informado que um dos parmetros utilizados chama-se horrio, e
ser do tipo string.
Linha 6 - Dentro da estrutura deste servio, informado que um dos mtodos do servio chama-se GetServerTime.
Linha 7 - Como no so mais necessrias mais propriedades ou mtodos neste servio, a estrutura do servio
fechada com esta instruo.
Linha 9 - Aqui declarado o fonte do mtodo GetServerTime, que no receber parmetro nenhum (mas para
efeitos de declarao, deve ser informado que ele receber o parmetro 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. Observe que, deve-se utilizar "::" para alimentarmos a
propriedade da classe atual.
Linha 11 - O mtodo GetServerTime finalizado nesta linha, retornando .T. (verdadeiro), indicando que o servio
foi executado com sucesso.

Aps compilado o servio, deve-se acessar novamente a pgina de ndice de servios (wsindex.apw) e verificar se o
novo servio compilado encontra-se l.
Se voc seguiu as configuraes desse documento, ento voc consegue acessa a pgina de ndices pelo endereo
http://localhost/wsindex.apw . Isso significa que o servio em questo est sendo executado em ambiente local.

Testando o servio
Ao acessar a pgina de ndice, e constatar a existncia do servio, deve-se 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 TOTVS | Development Studio para gerar o cdigo-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 Server, podemos gerar um cdigo-fonte client desta classe e compil-lo no mesmo
repositrio do ambiente utilizado pelo Web Service 'Server', que a prpria interface de ndice de servios permitir o teste
do mesmo.
O processo de gerao do client ser apresentado no Tpico Aplicaes Client, onde ser possvel implementar o
consumo desse servio configurado. Mas j que estamos falando de Aplicaes Web Service - Server, vamos concluir todos
os conceitos referentes ao mesmo para depois darmos sequncia as configuraes.

10. Falha de carga dos servios

Neste tpico, abordaremos 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 Web Services como um todo, e ocorrncias que podem invalidar
apenas um servio em caso de inconsistncia da declarao do mesmo.
XXX : Erro de Estrutura : ARRAY OF em parmetro de entrada direto no suportado
Durante a etapa de validao dos servios, na carga dos Web Services, esta ocorrncia reproduzida quando um parmetro
[XXX] foi utilizado como parmetro de entrada direto de um Web Services. Porm, o mesmo foi declarado com tratamento
de "Array Of".
Observao: No suportado receber diretamente um array como parmetro de um mtodo de Web Services 'Server'.
Soluo
Verifique e corrija o cdigo-fonte.
Crie uma estrutura intermediria para encapsular o parmetro que deve ter tratamento de array.

Erro de Estrutura: Estrutura Indefinida
Durante a etapa de validao dos servios, na carga dos Web Services, esta ocorrncia reproduzida quando uma
propriedade da classe server foi especificada como sendo uma estrutura, do tipo no bsico, porm a declarao da
estrutura no foi localizada.
Soluo
Verifique e corrija o cdigo-fonte para proceder com a declarao da referida estrutura.

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

[XXX] : [YYY] : Erro de Mtodo : Estrutura de Entrada no encontrada
Durante a etapa de validao dos servios, na carga dos Web Services, 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 cdigo-fonte construtor do servio.
Soluo
Verifique e corrija o cdigo-fonte para declarar o parmetro YYY como uma propriedade da classe XXX.

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

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

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

[XXX] Erro de Mtodo : Nome de Mtodo Invlido - Tipo bsico conflitante
Durante a etapa de validao dos servios, na carga dos Web Services, esta ocorrncia reproduzida quando o nome de um
determinado 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.
Soluo
Verifique e corrija, no cdigo-fonte, a declarao do nome do mtodo.

Redundncia de Estruturas
Durante a etapa de validao dos servios, na carga dos Web Services, esta ocorrncia reproduzida quando temos uma
cadeia de estruturas, compostas por tipos bsicos e outras estruturas, e a declarao das estruturas entre 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 do tipo <B>, e <B> por sua vez tem uma propriedade do tipo <A>.
Soluo
Verifique e corrija, no cdigo-fonte, a declarao das estruturas envolvidas.

WSDL Server ONLOAD ERROR - Falha Interna na Carga do Web Service
Esta ocorrncia apresentada na tela de ndice dos Web Services (wsindex.apw), quando algum erro fatal ocorre na carga
dos Web Services. Os detalhes sobre a ocorrncia fatal so exibidas no console, do TOTVS | Application Server, e gravados
no arquivo error.log, do ambiente em uso.

11. Ocorrncias de erro fatal e tratamento de erro

Neste tpico, abordaremos as mensagens de ocorrncias relacionadas erro fatal.As ocorrncias de erro fatal, refere-se
falhas de carga do engine de Web Services como um todo e ocorrncias de falha de processamento quando da chamada
para execuo dos servios.Para isso, em cada mensagens discriminaremos um resumo da ocorrncia, sua possvel causa e
possveis solues.

AUTOMATIC URLLOCATION FAILED
Ao configurar um Web Service 'Server', deve-se especificar, atravs da chave URLLOCATION, a URL especfica para o acesso
aos servios.
Quando no definimos esta URL, a LIB de Web Services identifica automaticamente sob qual host o servio foi acessado.
Esta operao no possvel quando o header HTTP do pacote permite informar uma operao diferente de 'Get' ou
'POST', ou o servidor do sistema esta executando tambm em uma 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 Web Service no processado, e o
processamento abortado com a ocorrncia de erro acima.

BUILD [XXX] USING WEBSERVICES HTTPS NOT SUPPORTED
Quando da carga inicial dos Web Services 'Server', a configurao da chave URLLocation criticada pela LIB. Caso, seja
especificado que o acesso ser realizado via HTTPS e a build atual do TOTVS | Application Server utilizado ainda no
suporta a utilizao do Web Service sob o protocolo HTTPS.

INVALID URLLOCATION [XXX] ON [YYY]
Quando da configurao do TOTVS | Application Server para Web Services, caso especificada a configurao da chave
URLLOCATION, na seo Environment, do arquivo de configurao do TOTVS | Application Server, porm a mesma no seja
especificada com uma sintaxe vlida, o processamento abortado ao subir as 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 TOTVS |
Application Server.
Uma URL considerada invlida caso a mesma no seja iniciada com 'http://', 'https://', seja finalizada com um caractere
no alfanumrico, diferente de '/', possua caracteres acentuados ou espaos. Desta forma, so considerados vlidos
apenas os caracteres alfanumricos e caracteres ':' (dois pontos), '.' (ponto), '/' (barra) e '-' (hfen).
Observao: Esta validao foi implementada na infraestrutura de Web Services, a partir da verso de infraestrutura
'ADVPL WSDL Server 1.031209'.

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 Web Service, na
camada da LIB, quando da gerao do pacote 'SOAP' de retorno ao 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 arrray no continha nenhum elemento.
Soluo
Verifique o mtodo solicitado e certifique-se que a propriedade de retorno esteja sendo alimentada.

REQUIRED Return property [X] Type [Y] Unexpected Valtype [Z]
Esta ocorrncia de erro reproduzida quando do trmino do processamento de um mtodo de um Web Services, na
camada da LIB, quando da gerao do pacote 'SOAP' de retorno ao 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, a mesma continha um valor do tipo AdvPL [Z].
Soluo
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.

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 Web Services, na
camada da LIB, quando da gerao do pacote SOAP de retorno ao client solicitante do servio.
Quando da identificao da propriedade [X] de retorno do mtodo, a mesma deveria ser um array AdvPL, contendo
elementos do tipo [Y]; porm, ao invs da propriedade ser um do tipo A (array), a mesma continha um valor do tipo AdvPL
[Z].
Soluo
Verifique o mtodo solicitado e certifique-se que a propriedade de retorno esteja alimentada com um array.

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 Web Service, na
camada da LIB, quando da gerao do pacote 'SOAP' de retorno ao 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 tipo [Y]; porm, a propriedade de retorno continha um valor do tipo AdvPL [Z].
Soluo
Verifique o mtodo solicitado e certifique-se que a propriedade de retorno seja alimentada com a respectiva estrutura, em
conformidade com a declarao da propriedade da classe de servio.

Return property [X] Type [Y] Unexpected Valtype [Z]
Esta ocorrncia de erro reproduzida quando do trmino do processamento de um mtodo de um Web Service, na
camada da LIB, quando da gerao do pacote 'SOAP' de retorno ao 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, a mesma continha um valor do tipo AdvPL [Z].
Soluo
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.

UNKNOW ERROR : EMPTY HTTP RETURN
Quando do processamento de uma requisio de um mtodo de Web Services 'Server', so executadas consistncias de pr
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 (SOAP Fault),
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. No entanto, at o momento, esta ocorrncia no foi reproduzida sob nenhuma condio.

[SVC] : [METHOD] as [X] : Tipo Inesperado de Retorno do Mtodo
Esta ocorrncia de erro reproduzida, quando do trmino da execuo de um mtodo de uma classe 'Server' de Web
Services. 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
[METHOD] e o tipo de retorno efetivo retornando em [X].
Soluo
Verifique o cdigo-fonte do mtodo do servio e certifique-se que o retorno efetivo do mtodo seja sempre .T.
(verdadeiro) ou .F. (falso).

Exemplos AdvPL

A seguir so apresentados diversos cdigos-fonte que exemplificam o uso das funes:
GetWSCError
GetWSCVer
GetWSSVer
SetSoapFault.

Exemplo de uso da funo GetWSCError


Neste exemplo, ser ilustrado o tratamento de erro sugerido para uma chamada de um mtodo atravs de um programa
'Client', desenvolvido em AdvPL.

1 #include 'Protheus.ch'
2 #include 'ApWebSrv.ch'
3
4 User Function TstService
5 Local oService , cSvcError , cSoapFCode ,cSoapFDescr
6 ClienteoService := WSTeste():New() // Cria uma instncia do servio
7 If oService:Hello() // Realiza a chamada do mtodo Hello() do servio.
8 MsgStop('Execuo OK') // Mtodo executado com sucesso.
9 Else // Caso o mtodo retorne .F. , devemos identificar e tratar a ocorrncia
10 cSvcError := GetWSCError() // Resumo do erro
11 cSoapFCode := GetWSCError(2) // Soap Fault Code
12 cSoapFDescr := GetWSCError(3) // Soap Fault Description
13 If !empty(cSoapFCode) // Caso a ocorrncia de erro esteja com o fault_code
preenchido , a mesma teve relao com a chamada do servio.
14 MsgStop(cSoapFDescr,cSoapFCode)
15 Else // Caso a ocorrncia no tenha o soap_code preenchido, ela est
relacionada a uma outra falha, provavelmente local ou interna.
16 MsgStop(cSvcError,'FALHA INTERNA DE EXECUCAO DO SERVIO')
17 Endif
18
19 EndifoService := NIL
20
21 Return


Exemplo de uso da funo GetWSCVer


Neste exemplo, obtemos a verso da Lib 'Cliente' de Web Services compilada no repositrio atual.

1 User Function ShowVersions()
2 Local cCliVers := GetWSCVer()
3 MsgStop(cCliVers)
4 Return

Exemplo de uso da funo GetWSSVer


Neste exemplo, obtemos a verso da Lib 'Server' de Web Services compilada no repositrio atual.

1 User Function ShowVersions()
2 Local cSrvVers := GetWSSVer()
3 MsgStop(cSrvVers)
4 Return

Exemplo de uso da funo SetSoapFault


Neste exemplo de uso da funo, apresentamos dois exemplos de cdigo-fonte para demonstrar sua utilizao.

1 // ********* Exemplo 01 *********
2 //(...)
3 If ::Indice > 1024
4 SetSoapFault('Argumento Invlido','O ndice no pode ser maior que 1024.')
5 Return .f.
6 Endif
7 //(...)
8
9 // ********* Exemplo 02 *********
10 //(...)
11 If !File('\extras\modelo.cfg')
12 SetSoapFault('Servio Indisponvel','',SOAPFAULT_RECEIVER)
13 Return .f.
14 Endif
15 //(...)

Observaes:
No exemplo 01, partindo de um mtodo de um Web Services '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 ao ambiente do servidor.
Por padro, o Fault-Code de um Soap-Fault 'SOAPFAULT_SENDER', o que indica que o servio no foi processado
por alguma razo ligada ao pacote de dados enviados; e indica ao client que o pacote deve ser remontado para que
o servio seja executado.
Web Services 'Client'

Aplicaes Protheus 'Client' de Web Services

Definio de client
Quando um Web Service 'Server' criado e disponibilizado, junto disponibilizada a definio do servio,
argumentos, estruturas e retornos (WSDL).
Para utilizar 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 excees.
Embora existam Web Services que podem ser acessados via HTTP direto, apenas passando parmetros via URL,
o client do Web Services do TOTVS | Application Server 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 (a verso 1.1 da
especificao SOAP foi utilizada como base para implementao do toolkit de Web Services do Microsiga Protheus). O
TOTVS | Application Server possui ferramentas e infraestrutura incorporadas que permitem esta integrao.
Gerao do client em AdvPL
No TOTVS | Development Studio, encontra-se disponvel, no menu Ferramentas, a opo para que, atravs de um
link para a obteno do documento WSDL de um servio, o TOTVS | Application Server gere automaticamente, em AdvPL,
uma classe client para a comunicao e utilizao do mesmo.
Para isso, necessrio obter o endereo internet (URL) do WSDL desejado, criar um novo cdigo-fonte e acessar no
menu Ferramentas + Gerar Cliente WebServices.... No entanto, para cada servio que se tenha necessidade de gerar um
cdigo-fonte client, recomenda-se que cada cdigo-fonte client seja gerado em um arquivo independente e exclusivo para
este fim, e que de forma alguma este cdigo-fonte gerado, pelo assistente, seja alterado.
Como a especificao SOAP 1.1 foi utilizada como base para a implementao da interface Client de Web Services,
usar um WSDL fornecido com verso a partir de 1.2 pode no ser suportado na ntegra, gerando ocorrncias desde falha na
gerao do fonte client em AdvPL, at a gerao ou funcionamento incompletos.
Em casos especiais, pode ser necessria alguma alterao no cdigo-fonte client gerado, caso necessrio atender
alguma necessidade especfica da aplicao Server de Web Services no contemplada de modo nativo pela implementao
de Web Services do TOTVS | Application Server. Neste caso, deve-se tomar muita ateno e documentar o cdigo-fonte,
pois caso este fonte tenha que ser gerado novamente por qualquer razo, a alterao realizada perdida e, se ainda
necessria, dever ser realizado novamente no cdigo regerado manualmente.
Requisitos bsicos para gerao do client em AdvPL
O processo de gerao do cdigo-fonte disparado atravs do TOTVS | Development Studio, porm,
o servidor TOTVS | Application Server que buscar o documento WSDL solicitado. De modo que, a estao servidora
utilizada no ambiente deve ter acesso ao endereo solicitado. importante salientar que, o processo de busca da URL
informada disparado pelo TOTVS | Development Studio, mas a operao realizada atravs do TOTVS | Application
Server. Logo, a mquina onde o servio do TOTVS | Application Server est sendo executado deve ter acesso URL
informada.
Gerao de fonte client para WSDLs disponibilizados em arquivo
Existem fornecedores de servios para Web Services que fornecem os arquivos contendo as definies (WSDL) para
a gerao dos clients. O TOTVS | Development Studio suporta a gerao de fonte client em arquivo. Para tal, deve-se
disponibilizar o arquivo em uma pasta a partir do RootPath do ambiente (environment) configurado no TOTVS |
Development Studio, e informar na caixa de dilogo da URL para a gerao do cdigo-fonte, o path do arquivo, sempre
iniciado com "\" (barra inversa) , seguido do path e nome do arquivo no servidor a ser utilizado para a gerao.
Por exemplo, caso o arquivo contendo o WSDL chama-se "meuservico.txt", e ele seja copiado para uma pasta
chamada "WSDL", que fica a partir do RootPath do ambiente em uso no TOTVS | Development Studio, a URL informada
no TOTVS | Development Studio para gerar o cdigo-fonte client deve ser "\wsdl\meuservico.txt" . O TOTVS |
Development Studio no vai criticar a extenso do arquivo, mas sim o contedo do mesmo. Ele deve conter um arquivo
XML no formato WSDL.
Gerao de fonte client para WSDLs publicados com autenticao e/ou conexo segura ( HTTPS )
A engine de conexo client HTTP do TOTVS | Application Server suporta conexo com URLs com HTTPS, inclusive
para a gerao de fonte client de Web Services. Existem apenas restries quando a URL dos Web Services exigir
autenticao (usurio e senha) para baixar o WSDL, e/ou seja uma conexo HTTPS que exija um uso de
certificado client especfico.
No caso da autenticao, possvel acessar a URL onde o WSDL est publicado atravs de um Web Browser
(Navegador da Web), fazer a autenticao atravs do Browser, e ao acessar o WSDL, salv-lo em arquivo, copiar para uma
pasta a partir do RootPath do TOTVS | Application Server, e fazer a gerao do client pelo TOTVS | Development Studio
informando o arquivo em disco. Este mesmo procedimento tambm pode ser aplicado quando o WSDL est publicado em
um endereo HTTPS que requer uso de certificado client. Basta conseguir acessar o contedo do WSDL no Web
Browser, acess-lo em disco, e fazer a gerao a partir do arquivo em disco. Caso o Web Service possua dependncias
(imports) que estejam publicados, a gerao um pouco mais complicada, pois existe a necessidade de fazer download de
todos os imports necessrios, e compilar um e apenas um arquivo contendo o WSDL principal com todos os imports para a
gerao do fonte client ser feita com sucesso.
Ainda quanto gerao de clients onde o WSDL est publicado com conexo segura (HTTPS) que exija o uso de um
certificado client especifico, possvel gerar pelo TOTVS | Development Studio, desde que o TOTVS | Application
Server seja configurado para uso do certificado, como se o certificado fosse utilizado para conexo entre remote e server (
vide configurao da seo [SSLCONFIGURE] do TOTVS | Application Server). Basta configurar o certificado no TOTVS |
Application Server, subir o servio, e proceder com a gerao do fonte client pelo TOTVS | Development Studio,
informando a URL.

Gerao de client em AdvPL - 1 Passo

1 Passo - Determinar como obter o WSDL do servio desejado.
A maioria das definies WSDL, dos servios disponveis 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 poder 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, aps um cadastro no site e autorizao da empresa para uso do
servio por ele provido.
Exemplo
Neste exemplo, a definio obtida diretamente via HTTP, atravs do link http://localhost/SERVERTIME.apw?WSDL. Mas,
caso este link seja acessado atravs de um Web Browser (exemplo: Internet Explorer), ser apresentado no browse um
documento XML correspondente a definio do servio.


Gerao de client em AdvPL - 2 Passo

2 Passo - Gerar o cdigo-fonte AdvPL, do client, usando o assistente do TOTVS Development Studio.
Ao ser gerado um cdigo-fonte client para um Web Service, este cdigo-fonte conter as definies dos mtodos
do servio, a(s) estrutura (s) utilizada (s) 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 cdigo-fonte gerado atravs do assistente de criao de fonte deve preferencialmente ser gerado e compilado
em um arquivo exclusivo, destinado nico 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 cdigo-fonte seja gerado
novamente.

Procedimento
Para gerao do cdigo-fonte client, em AdvPL, para utilizar este servio, necessrio criar um novo arquivo .PRX,
no TOTVS | Development Studio, especificamente para conter as classes deste servio. Para isso, acesso o menu
Ferramentas + Gerar Cliente WebService.
Ao clicar nesta opo, ser apresentada uma tela (tipo pop-up).



No campo URL do WebService, informe a URL de onde o servidor ir obter a definio do Web Service.
No nosso exemplo, http//localhost/SERVERTIME.apw?WSDL.
Aps a confirmao, caso o procedimento ocorra com sucesso, na janela de mensagens do TOTVS | Development
Studio, ser apresentado 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 apresentado abaixo:

1 #INCLUDE 'PROTHEUS.CH'
2 #INCLUDE 'APWEBSRV.CH'
3
4 /*==============================================================================
5 WSDL Location http://localhost/SERVERTIME.apw?WSDL
6 Gerado em 12/30/02 17:21:29
7 Observaes Cdigo-fonte gerado por ADVPL WSDL Client 1.021217
8 Alteraes neste arquivo podem causar funcionamento incorreto
e sero perdidas caso o cdigo-fonte seja gerado novamente.
9 ============================================================================= */
10
11 /*------------------------------------------------------------------------------
12 WSDL Service WSSERVERTIME
13 ----------------------------------------------------------------------------- */
14
15 WSCLIENT WSSERVERTIME
16 WSMETHOD NEW
17 WSMETHOD GETSERVERTIME
18 WSDATA _URL AS String
19 WSDATA cGETSERVERTIMERESULT AS string
20 ENDWSCLIENT
21
22 WSMETHOD NEW WSCLIENT WSSERVERTIME
23 ::_URL := NIL
24 ::cGETSERVERTIMERESULT := ''
25 Return Self
26
27 /*------------------------------------------------------------------------------
28 WSDL Method GETSERVERTIME of Service WSSERVERTIME
29 ----------------------------------------------------------------------------- */
30
31 // Definio do mtodo, que recebe os parmetros de chamada, executa o servio e
alimenta as propriedades de retorno do mtodo, contendo os encapsulamentos
necessrios para tratamento de excees.
32
33 WSMETHOD GETSERVERTIME WSSEND NULLPARAM WSRECEIVE cGETSERVERTIMERESULT WSCLIENT
WSSERVERTIME
34 Local cSoap := '', oXmlRet
35
36 BEGIN WSMETHOD DEFAULT
37 ::_URL := 'http://localhost/SERVERTIME.apw'
38 cSoap += '<GETSERVERTIME xmlns="http://localhost/">'
39 cSoap += '</GETSERVERTIME>'
40 oXmlRet := SvcSoapCall( Self, cSoap,;
41 'http://localhost/GETSERVERTIME',;
42 'DOCUMENT','http://localhost/',)
43 ::cGETSERVERTIMERESULT := xGetInfo ( oXmlRet,
'_GETSERVERTIMERESPONSE:_GETSERVERTIMERESULT:TEXT', '')
44 END WSMETHOD
45
46 oXmlRet := NIL
47
48 Return .T.

O cdigo-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 observar que, as linhas em negrito no cdigo-fonte acima, no foram inseridas pelo assistente
do TOTVS | Development Studio, mas acrescentadas a este documento para fins didticos.
O cabealho do cdigo-fonte contm informaes sobre a localizao do WSDL utilizado para a gerao do cdigo-
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.

Gerao de client em AdvPL - 3 Passo

3 Passo - Criar um cdigo-fonte que utilize a classe para utilizao do Web Service.

Neste passo, necessrio criar um novo cdigo-fonte, no TOTVS | Development Studio, e montar uma funo para
utilizar a classe de Web Service client e obter o horrio no servidor.

1 #INCLUDE TOTVS.CH
2
3 User Function TestClient()
4
5 Local oSvc := NIL
6 oSvc := WSSERVERTIME():New()
7
8 If oSvc:GETSERVERTIME()
9 alert('Horrio no Servidor : ' + oSvc:cGETSERVERTIMERESULT)
10 Else
11 alert('Erro de Execuo : ' + GetWSCError())
12 Endif
13
14 Return

Linha 1 - Declarao da include TOTVS.CH que contm as definies dos comandos AdvPL e demais constantes.
Linha 3 - Inicia-se a definio da User Function para utilizar o Web Service.
Linha 4 - Declarao de uma varivel local para conter o objeto do Web Service client.
Linha 6 - Utilizando-se do servio, a varivel oSvc alimentada com um nova instncia do Web Service client, obtida
atravs da sintaxe <NOME_DO_SERVIO>():New().
Linha 8 - O mtodo GetServerTime executado a partir do objeto do servio oSrv, sem passar qualquer parmetro.
O retorno de um mtodo do client pode ser verdadeiro (.T.), se for executado com sucesso, ou falso (.F.), em caso
de falha de execuo.
Linha 9 - Caso o servio tenha sido executado com sucesso, o retorno esperado alimentado na propriedade
cGetServerTimeResult do objeto do servio.
Linha 11 - Caso contrrio (retorno falso (.F.)), ocorreu alguma falha na chamada do servio, como, por exemplo, o
servidor no estava no ar, demorou muito para responder (time-out), entre outras. Para recuperar os detalhes da
ocorrncia de erro, utilize a funo GetWSCError() para retornar uma string com o resumo da ocorrncia.
Linha 14 - O programa de teste finalizado com um Return.




Gerao de client em AdvPL - 4 Passo

4 Passo - Executar o programa de teste.

Abra uma nova instncia do TOTVS | SmartClient e execute a funo U_TestClient. Caso o Web Service esteja no ar,
funcionando e o cdigo-fonte client devidamente compilado e sem erros, o resultado esperado uma janela com o horrio
do servidor.
Exemplo

No ambiente montado para teste, o servidor de Web Service e o client esto no sistema, compilados no mesmo
Repositrio de Objetos.
Para fins didticos, possvel simular uma ocorrncia de falha no client ao desabilitar o servidor HTTP do TOTVS |
Application Server (configurar a chave Enable=0, na seo [HTTP], do arquivo de configurao do TOTVS | Application
Server), e reiniciar o TOTVS | Application Server e executar o programa client novamente. Com isso, o sistema apresentar
uma tela semelhante ao exemplo abaixo:



Gerao de client em AdvPL - 5 Passo

5 Passo - Obtendo informaes de debug.
At o 4 passo, vimos um exemplo completo de um client funcionando perfeitamente. Agora, possvel
verificarmos 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 isso, foi criada a funo WSDLDbgLevel() que permite definir em tempo de execuo, um nvel de
detalhamento de informaes adicionais relacionadas ao Web Service; informaes que so apresentadas no console do
TOTVS | Application Server (caso habilitado).
Essa funo recebe um nmero como parmetro, sendo:


Valor Descrio
0 (padro) Sem informaes adicionais.
1 Apenas strings SOAP de retorno do TOTVS | Application Server.
2 String SOAP de envio e retorno.

Alm disso, observe na linha 7, do cdigo-fonte do 3 Passo, que a instruo WSDLDbgLevel(2) acrescentada para
ativar o nvel mais complexo de informaes adicionais e possvel observar no console, do TOTVS | Application Server, as
mensagens apresentadas durante a execuo do cdigo-fonte de testes do ?client?.
Deve ser obtido um echo no console do TOTVS | Application Server semelhante ao exemplo abaixo:

Iniciando Thread (siga0984, AUTOMAN)...

1 Exemplo
-------------------------------------------------------------------------------
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)

2 Exemplo
---------------------------------- 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>
-------------------------------------------------------------------------------

3 Exemplo
--------------------------------- 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><GETSERVERTIMERESPONSE
xmlns='http://automan:8000/webservice/'><GETSERVERTIMERESULT>10:37:10</GETSERVE
RTIMERESULT></GETSERVERTIMERESPONSE></soap:Body></soap:Envelope>
-------------------------------------------------------------------------------

Fim Thread (siga0984, AUTOMAN) BytesIn 73 BytesOut 75

No primeiro exemplo so as mensagens informativas a respeito da chamada do Web Service, informando a URL
chamada, o estilo SOAP de troca de dados (document), o NameSpace e o SoapAction utilizados. No segundo
exemplo (SOAPSEND) informa o contedo do pacote Soap que foi enviado (postado) ao Servidor, e no terceiro exemplo
(POST RETURN) informa o contedo do pacote Soap devolvido pelo Server referente a esta solicitao.
Quando ocorre um erro qualquer, relacionado execuo do ?client? Web Services, o mtodo chamado retorna .F.,
e o erro pode ser recuperado atravs da funo GetWSCerror(), vista anteriormente . Para cada exceo prevista
no ?client?, existe um cdigo de erro correspondente, todos eles prefixados com WSCERR . A maioria das ocorrncias est
relacionada gerao do Cdigo-fonte do ?client? AdvPL utilizado-se o TOTVS | Development Studio. Todas as ocorrncias
de exceo tratadas peo Web Services ?client? AdvPL esto relacionadas no Tpico Web Services ?client? ? Cdigos de
Erro.

Ocorrncias de erro

[WSDL no suportado. Existe mais de um servio declarado.]
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS |
Development Studio. 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 cdigo-fonte, o processo
abortado, o WSDL considerado invlido, e o cdigo-fonte client no gerado.

WSCERR001 / No h SOAP:BINDINGS para a gerao do Servio.
Durante a gerao do cdigo-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
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS |
Development Studio. 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
parmetros 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 ao nome do parmetro e tipo utilizado, respectivamente.

WSCERR004 / NO IMPLEMENTADO ( 001<X> / <N> / WSDLTYPE_NAME )
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebService 'Client', utilizando o TOTVS |
Development Studio. 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 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.
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS |
Development Studio. 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.
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS |
Development Studio. 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.
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS |
Development Studio. 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)
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 sada. 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 incompleto
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS
| Development Studio. 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.
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS |
Development Studio. 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
subestrutura do servio , e a primeira (008) refere-se um parmetro/estrutura de primeiro nvel do servio.

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 sada. 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, porm esta indica uma falha em outro ponto da rotina interna
de anlise.

WSCERR013 / [SOAP_TYPE] UNEXPECTED TYPE.
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS |
Development Studio. 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 ERP, a gerao do cdigo-fonte abortada com esta ocorrncia, indicando em
SOAP_TYPE o tipo no suportado.

WSCERR014 / INVALID NULLPARAM INIT
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS |
Development Studio. 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 cdigo-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 Response not found.
Esta ocorrncia reproduzida, quando da utilizao de um cdigo-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 cdigo-fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F.
(falso), e a descrio da ocorrncia deve ser recuperada atravs da funo GetWSCError().

WSCERR016 / Requisio HTTPS no suportada neste Build. [XXX]
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS |
Development Studio. Quando informada uma URL para buscar a definio do servio (WSDL), utilizando o protocolo HTTPS;
porm a build do ERP atual no suporta o tratamento de Web Services 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, a build do ERP deve ser atualizado.

WSCERR017 / HTTP[S] Requisio retornou [NIL]
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS |
Development Studio. 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]
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS
| Development Studio. 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 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.
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS
| Development Studio. 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 ao arquivo solicitado.

WSCERR020 / ( XXX / FERROR YYY ) Falha de Abertura.
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS |
Development Studio. Quando informada uma URL para buscar a definio do servio (WSDL), apontando para um arquivo
no disco; porm houve uma impossibilidade de acesso ao 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]
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS |
Development Studio. 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 sistema 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]
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS |
Development Studio. 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 sistema 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 / [xxx] FALHA INESPERADA AO IMPORTAR WSDL
Esta ocorrncia reproduzida, ao gerar um cdigo-fonte de Web Services Client, utilizando o TOTVS | Development Studio.
Ao informar uma URL para buscar a definio do servio (WSDL), aps o documento WSDL ser recuperado, caso tenha
passado pela etapa de validao XML, onde o documento retornado constitui um XML sintaticamente vlido, o parser no
identifica nenhuma estrutura referente a um documento WSDL. Desta forma, o documento considerado invlido e a
gerao do cdigo-fonte cancelada com esta ocorrncia.
No cabealho da mensagem [xxx], possvel verificar a especificao do documento/operao que apresentou a
inconsistncia.

WSCERR024 / [MSG_INFO] MESSAGE no encontrada.
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS
| Development Studio. 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.
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS
| Development Studio. 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 amarrao (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.
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS |
Development Studio. 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 encontrado.
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS |
Development Studio. 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 em aPort.
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS |
Development Studio. 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 operaes.
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS |
Development Studio. 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.
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS |
Development Studio. 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 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.
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS
| Development Studio. 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 declarado
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS |
Development Studio. 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 identificado 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 informado.
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS |
Development Studio. 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.
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS |
Development Studio. 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 reprocessado. 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].

WSCERR036 / Definio no suportada.
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS |
Development Studio. 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 especificado qualquer outro tipo de referncia, o
WSDL no suportado, e o processo de gerao abortado com a mensagem acima.

WSCERR037 / [TYPE] Estrutura Interna Inesperada.
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS
| Development Studio. 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.
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS |
Development Studio.
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 uma estrutura e/ou
parmetro/retorno tenha passado por todas as interpretaes cabveis de uma estrutura, porm no foi possvel localizar
ou identificar adequadamente a estrutura, o WSDL considerado invlido, e o processo de gerao abortado com a
mensagem acima, identificando o parmetro de origem da mesma em [PARAM].
Em termos prticos, este erro significa que : OU o WSDL fornecido no vlido, OU a engine de parser WSDL do Protheus
no reconheceu a estrutura como vlida, isto , no soube lidar com ela para gerar um fonte client AdvPL.

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 certifique-se de sempre passar um Objeto XML ou Array para a funo
XMLDataSet().

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 certifique-se de sempre passar um Objeto XML ou Array para a funo
XMLDataSchema().

WSCERR041 / [NOTNIL_MESSAGE]
Esta ocorrncia reproduzida, quando da utilizao de um cdigo-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 cdigo-fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F.
(falso), e a descrio da ocorrncia deve ser recuperada atravs da funo GetWSCError().


WSCERR042 / URL LOCATION no especificada.
Esta ocorrncia reproduzida, quando da utilizao de um cdigo-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 cdigo-fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F.
(falso), e a descrio da ocorrncia deve ser recuperada atravs 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
postagens obtidas no WSDL utilizado para a gerao do cdigo-fonte client.

WSCERR043 / [SOAP_STYLE] SOAPSTYLE Desconhecido.
Esta ocorrncia reproduzida, quando da utilizao de um cdigo-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 ao 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 cdigo-fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F.
(falso), e a descrio da ocorrncia deve ser recuperada atravs 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]
Esta ocorrncia reproduzida, quando da utilizao de um cdigo-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 especificada 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 especificada em [URL_POST].
Esta ocorrncia capturada pelo prprio cdigo-fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F.
(falso), e a descrio da ocorrncia deve ser recuperada atravs da funo GetWSCError().

WSCERR045 / Retorno VAZIO de POST : URL <URL> [HEADER_RET]
Esta ocorrncia reproduzida, quando da utilizao de um cdigo-fonte Client de WebServices, ao enviar o
pacote SOAP com o(s) parmetro(s) d ao/mtodo solicitado.
Aps 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 do sistema 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 cdigo-fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F.
(falso), e a descrio da ocorrncia deve ser recuperada atravs da funo GetWSCError().

WSCERR046 / XML Warning [XML_WARNING] ( POST em <URL> )
Esta ocorrncia reproduzida, quando da utilizao de um cdigo-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 analisado para a alimentao dos parmetros AdvPL. Caso seja detectada alguma inconsistncia, considerada
pelo parser interno de xml do sistema 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 cdigo-fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F.
(falso), e a descrio da ocorrncia deve ser recuperada atravs da funo GetWSCError().

WSCERR047 / XML Error [XML_ERROR] ( POST em <URL> )
Esta ocorrncia reproduzida, quando da utilizao de um cdigo-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 analisado para a alimentao dos parmetros AdvPL. Caso seja detectada alguma inconsistncia, considerada
pelo parser interno de xml do sistema, 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 cdigo-fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F.
(falso), e a descrio da ocorrncia deve ser recuperada atravs da funo GetWSCError(). Veja mais 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 <URL> ) : [FAULT_STRING]
Esta ocorrncia reproduzida, quando da utilizao de um cdigo-fonte Client de WebServices, ao processar o
pacote SOAP recebido como retorno da ao/mtodo solicitado.
Ao analisar o pacote SOAP retornado pelo servio, para a alimentao dos parmetros AdvPL, caso o pacote de retorno
contenha uma exceo 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 exceo SOAP, em <URL> o
servidor de WebService que retornou o pacote, e em FAULT_STRING mais detalhes sobre a ocorrncia. Esta ocorrncia
capturada pelo prprio cdigo-fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F. (falso), e a descrio
da ocorrncia deve ser recuperada atravs da funo GetWSCError().
Alternativas para soluo do erro WSCERR048
Ocorrncias de erro e a soluo possvel para elas:
Erro:
WSCERR048 / SOAP FAULT soap:Client ( POST em
http://localhost/webservice/NomeDoServicoWS) : [Unmarshalling Error: unexpected
element (uri:"http://localhost/", local:"NomeDaTag"). Expected elements are
<{}NomeDaTag> ]
Explicao:
O Servidor espera que a tag "NomeDaTag" contenha o atributo "xmlns", ainda que vazio: <NomeDaTag xmlns=""> ...
Soluo
Altere a chamada da funo "WSSoapValue" no client gerado pelo IDE de modo que o ltimo parmetro da funo seja .T.:
cSoap += WSSoapValue("NomeDaTag", ...... demais parmetros ......., .T.)

WSCERR049 / SOAP RESPONSE (RPC) NOT FOUND.
Esta ocorrncia reproduzida, quando da utilizao de um cdigo-fonte Client de WebServices, ao processar o pacote SOAP
recebido como retorno da ao/mtodo solicitado.
Ao analisar 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 cdigo-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) NOT FOUND.
Esta ocorrncia reproduzida, quando da utilizao de um cdigo-fonte Client de WebServices, ao processar o pacote SOAP
recebido como retorno da ao/mtodo solicitado.
Ao analisar 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 um 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 no encontrado em <NODE_REF>.
Esta ocorrncia capturada pelo prprio cdigo-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.
Esta ocorrncia reproduzida, quando da utilizao de um cdigo-fonte Client de WebServices, ao processar o
pacote SOAP recebido como retorno da ao/mtodo solicitado.
Ao analisar 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 cdigo-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]
Esta ocorrncia reproduzida, quando da utilizao de um cdigo-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 analisados e validados. Caso
um parmetro contiver uma definio de enumeration, obtida no WSDL, e for alimentado pelo cdigo-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 cdigo-fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F.
(falso), e a descrio da ocorrncia deve ser recuperada atravs 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.
Esta ocorrncia reproduzida, quando da utilizao de um cdigo-fonte Client de WebServices, ao processar o pacote SOAP
recebido como retorno da ao/mtodo solicitado.
Ao analisar 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 cdigo-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.
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS |
Development Studio.
Durante a gerao do cdigo-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 cdigo-
fonte client abortado, retornando esta ocorrncia. A infraestrutura Client de WebServices do sistema 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] (Y)
Esta ocorrncia reproduzida, quando da utilizao de um cdigo-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 analisados 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 cdigo-fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F.
(falso), e a descrio da ocorrncia deve ser recuperada atravs 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 : soap-envelope not found.
Esta ocorrncia reproduzida, quando da utilizao de um cdigo-fonte Client de WebServices, ao iniciar o
processamento do pacote SOAP recebido como retorno da ao/mtodo solicitado.
Ao analisar o pacote SOAP retornado pelo servio, caso o mesmo no contenha um envelope (soap-Envelope) de resposta,
o retorno considerado invlido, e o processamento abortado com a mensagem acima.
Esta ocorrncia capturada pelo prprio cdigo-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 : soap-envelope empty.
Esta ocorrncia reproduzida, quando da utilizao de um cdigo-fonte Client de WebServices, ao iniciar o processamento
do pacote SOAP recebido como retorno da ao/mtodo solicitado.
Ao analisar 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 cdigo-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 : Invalid soap-envelope [SOAP_ENV] object as valtype [X]
Esta ocorrncia reproduzida, quando da utilizao de um cdigo-fonte Client de WebServices, ao iniciar o processamento
do pacote SOAP recebido como retorno da ao/mtodo solicitado.
Ao analisar 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 cdigo-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 : soap-body not found.
Esta ocorrncia reproduzida, quando da utilizao de um cdigo-fonte Client de WebServices, ao iniciar o processamento
do pacote SOAP recebido como retorno da ao/mtodo solicitado.
Semelhante ocorrncia WSCERR056, esta ocorrncia indica que no foi possvel determinar 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 cdigo-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 : soap-body envelope empty.
Esta ocorrncia reproduzida, quando da utilizao de um cdigo-fonte Client de WebServices, ao iniciar o processamento
do pacote SOAP recebido como retorno da ao/mtodo solicitado.
Semelhante ocorrncia WSCERR057, esta ocorrncia indica que pacote SOAP retornado, no foi possvel determinar o
prefixo do corpo (soap-body) utilizado; o que invalida o pacote de retorno, sendo o processamento abortado com esta
ocorrncia de erro.
Esta ocorrncia capturada pelo prprio cdigo-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 : Invalid soap-body [BODY] object as valtype [TYPE]
Esta ocorrncia reproduzida, quando da utilizao de um cdigo-fonte Client de WebServices, ao iniciar o processamento
do pacote SOAP recebido como retorno da ao/mtodo solicitado.
Semelhante 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 cdigo-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 : Unable to determine Soap Prefix of Envelope [SOAP_ENV]
Esta ocorrncia reproduzida, quando da utilizao de um cdigo-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 cdigo-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] as [TYPE]
Esta ocorrncia reproduzida, quando da utilizao de um cdigo-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 obrigatrio 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 cdigo-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) from <URL>
Esta ocorrncia reproduzida, quando da utilizao de um cdigo-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 analisado 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 content-type 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 cdigo-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 endereo
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) from <URL>
Esta ocorrncia reproduzida, quando da utilizao de um cdigo-fonte Client de WebServices, ao processar o
pacote SOAP recebido como retorno da ao/mtodo solicitado.
Semelhante 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 cdigo-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 (HTTP_HEAD) from <URL>
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS |
Development Studio.
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'.
Alternativa para gerao do client
Caso o WSDL possa ser aberto atravs de um navegador de internet (Internet Explorer, Mozilla Firefox, etc), proceda da
seguinte forma:
1. Abra a URL do WSDL no navegador de internet.
2. Salve o documento em um diretrio do RootPath do TOTVS | Application Server.
3. Gere o client novamente a partir do TOTVS | Development Studio, desta vez colocando no campo "URL do
WebService" o caminho em que o arquivo se encontra no RootPath.
Exemplo: "\arquivo.wsdl".

WSCERR067 / EMPTY WSDL Content-Type (HTTP_HEAD) from <URL>
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS |
Development Studio.
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 (content-type) definido
como text/plain ou text/xml.

WSCERR068 / NOT XML SOURCE from <URL>
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS
| Development Studio.
Esta ocorrncia indica que, o documento retornado pelo servidor de Web Services no se trata de um XML vlido para ser
analisado. 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 a estes requisitos, o processamento abortado com a mensagem acima.

WSCERR069 / BYREF [PARAM] WITH NO INPUT ARGUMENT : UNSUPPORTED WEBSERVICE
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS |
Development Studio.
Quando da gerao do cdigo-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 BUILD [PROTHEUS_BUILD]
Esta ocorrncia reproduzida, quando da utilizao de um cdigo-fonte Client de Web Services, 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 pela Build atual do servidor TOTVS | Application Server em uso.
Esta ocorrncia capturada pelo prprio cdigo-fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F.
(falso), e a descrio da ocorrncia deve ser recuperada atravs 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 endereo utilizando HTTPS. Caso a propriedade _URL no esteja sendo redefinida, e o servio solicitado
exija o envio dos dados atravs de HTTPS, a build do servidor TOTVS | Application Server deve ser atualizado.

WSCERR071 / INVALID HTTP HEADER (HTTPHEAD) from <URL>
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de WebServices 'Client', utilizando o TOTVS |
Development Studio.
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 certificar-se da ocorrncia, abra a URL especificada utilizando um Web Browser.

WSCERR072 / HTTP REQUEST ERROR (HEADER) from <URL>
Esta ocorrncia de erro reproduzida, quando da gerao de um cdigo-fonte de Web Services 'Client', utilizando o TOTVS
| Development Studio.
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 status 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
autenticao 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
Esta ocorrncia reproduzida, quando da utilizao de um cdigo-fonte Client de Web Services, ao processar o
pacote SOAP recebido como retorno da ao/mtodo solicitado.
O pacote SOAP retornado pelo servio analisado para a alimentao dos parmetros AdvPL. Em primeiro momento, so
realizadas as consistncias de cabealho de protocolo (header), e em seguida o pacote SOAP desmontado por
um parser interno do TOTVS | Application Server, 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 TOTVS | Application
Server 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 cdigo-fonte do mtodo, sendo que o mtodo 'Client' chamado retornar .F.
(falso), e a descrio da ocorrncia deve ser recuperada atravs da funo GetWSCError().

WSCERRINT ERROR_DESCRIPTION
Quando executado um mtodo 'client' de Web Service, as ocorrncias de falha dentro destas rotinas 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 , e a ocorrncia prefixada com
o cdigo WSCERRINT (Web Service Client Internal Error).
Caso seja reproduzida esta ocorrncia, verifique os parmetros informados ao mtodo chamado, e certifique-se que o
cdigo-fonte da classe 'client' em AdvPL no sofreu nenhuma alterao manual, aps a gerao do prprio.

ERROR_DESCRIPTION Invalid Method
Ocorrncia
registrada a ocorrncia WSCERRINT / invalid method no envio de um pacote SOAP cujo
parmetro da ao/mtodo solicitado provm de um schema.

-------------------------------------------------------------------------------
WSCERRINT / invalid method APXMLDOC45682:SOAPSEND
ADVPL WSDL Client 1.090116 / TOTVS Manufatura Everymoment on 20100521 16:04:52
-------------- CallStack --------------
Called from WSSOAPVALUE (4438)
Called from MARCARNOVOSRECLAMANT ( 115)
Called from EXEMPLO ( 9)
-------------------------------------------------------------------------------
Soluo
Altere o cdigo-fonte do 'client' Web Service e onde temos:

cSoap += WSSoapValue("reclamanteTable", ::oWSreclamanteTable,
oWSreclamanteTable , "SCHEMA", .F. , .F., 0 , NIL, .F.)

Monte e substitua pelo xml no formato requerido:

cSoap += "<reclamanteTable></reclamanteTable>"


Tipos de dados suportados - Client

possvel gerar cdigo-fonte AdvPL, para Web Service client, utilizando o tipos bsicos de dados reservados para
aplicaes client.
Para permitir a manipulao de cada tipo de dado, utilizando variveis AdvPL, so utilizados os tipos bsicos da
linguagem AdvPL que tratam simultaneamente mais de um tipo de dado dos pacotes SOAP dos Web Services.
A seguir, observe os tipos de dados disponibilizados, em AdvPL, atravs de uma varivel dos seguintes tipos:


Varivel do tipo 'N' Numrica
INT
INTEGER
BYTE
FLOAT
DOUBLE
UNSIGNEDLONG
UNSIGNEDINT
DECIMAL
LONG


Varivel do tipo 'D' Data
DATE

Varivel do tipo 'C' Character
STRING
DATETIME
CHAR (Corresponde a uma string que contm o nmero do caractere correspondente tabela ASCII.)
BASE64BINARY

Varivel do tipo 'L' Lgica
BOOLEAN

Glossrio - Web Services
Glossrio de termos e expresses de Web Services.

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.

Fonte Client: Cdigo-fonte AdvPL, gerado pela ferramenta do TOTVS | Development Studio 'Gerar Cliente WebServices...',
a partir de uma definio WSDL publicada em um servidor HTTP ou disponibilizada em um arquivo .WSDL.

SOAP - Simple Objetc Access Protocol ou protocolo simples de acesso a objetos: O SOAP um padro aberto, baseado em
XML, criado pela Microsoft, Ariba e IBM para padronizar a transferncia de dados entre aplicaes. Pode ser usado em
combinao com vrios outros protocolos comuns da Internet, como HTTP e SMTP.

Tipo bsico: So chamados de tipos bsicos, uma lista de tipos de informaes 'nativa' ,implementada na definio dos
WebServices.

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 ERP 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'. A aplicao 'client' deve ser capaz de se comunicar com a aplicao Server, utilizando mensagens em
XML/SOAP, segundo as regras fornecidas pelo Web Services Server atravs do WSDL.

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 'Client' que ir solicitar a
execuo da aplicao server e obter o retorno desta.

XML - Extensible Markup Language: O XML uma linguagem baseada em tags semelhante ao HTML. Sua principal
caracterstica a extensibilidade. Quem emite um documento XML pode criar tags personalizadas, que so definidas num
documento anexo, que tem extenso XSD.

XSD - XML Schema Definition: Arquivo associado a um documento XML que descreve e valida os dados no documento,
permitindo a criao de tipos de dados personalizados e regras especficas para os mesmos.

Observao: No deixe de visitar o Totvs Developer Network atravs do link http://tdn.totvs.com para incrementar e
atualizar os seus conhecimentos.

Você também pode gostar