PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 25 → WX - Passo a Passo de como criar um Web service RESTful com WebDev v21
WX - Passo a Passo de como criar um Web service RESTful com WebDev v21
Débuté par BOLLER, 12 nov. 2016 16:27 - 6 réponses
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 12 novembre 2016 - 16:27
Prezados,





Criando serviços Web RESTful com WebDev v21

Só faz sentido saber o que é REST, já que RESTful é apenas a capacidade de fazer REST, ou seja, é uma questão gramatical.

A Representational State Transfer (REST), em português Transferência de Estado Representacional, é uma abstração da arquitetura da World Wide Web, mais precisamente, é um estilo arquitetural que consiste de um conjunto coordenado de restrições arquiteturais aplicadas a componentes, conectores e elementos de dados dentro de um sistema de hipermídia distribuído.

O REST ignora os detalhes da implementação de componente e a sintaxe de protocolo com o objetivo de focar nos papéis dos componentes, nas restrições sobre sua interação com outros componentes e na sua interpretação de elementos de dados significantes.

Ele foi definido oficialmente pela W3C.

Fonte: Wikipedia (em inglês)

Ele é frequentemente aplicado à web services fornecendo APIs para acesso a um serviço qualquer na web. Ele usa integralmente as mensagens HTTP para se comunicar através do que já é definido no protocolo sem precisar "inventar" novos protocolos específicos para aquela aplicação.

Você trabalha essencialmente com componentes, conectores e dados.

Ele usa o protocolo HTTP (verbos, accept headers, códigos de estado HTTP, Content-Type) de forma explícita e representativa para se comunicar. URIs são usados para expor a estrutura do serviço. Utiliza uma notação comum para transferência de dados como XML ou JSON.
Não possui estado entre essas comunicações, ou seja, cada comunicação é independente e uniforme (padronizada) precisando passar toda informação necessária.
Ele deve facilitar o cache de conteúdo no cliente.
Deve ter clara definição do que faz parte do cliente e do servidor. O cliente não precisa saber como o servidor armazena dados, por exemplo. Assim cada implementação não depende da outra e se torna mais escalável.
Permite o uso em camadas também facilitando a escalabilidade, confiabilidade e segurança.
Frequentemente é criado com alguma forma de extensibilidade.

Falhando em um dos cinco primeiros itens, a arquitetura não pode ser classificada formalmente como RESTful. Mas nem todo mundo se apega ao formalismo.

Exemplo:

http://example.com/apagar/produto/1234

significa que você está pedindo para apagar o produto de ID 1234.

Há quem diga que isto está errado e já que a ênfase é em cima dos recursos e não das operações. Deveria usar assim:

http://example.com/produto/1234 (utilizando o verbo DELETE)

Convenhamos que isto pode servir para CRUD, mas existem tantas variações do que precisa ser feito que não é possível representar tudo só com os verbos HTTP. Ok, é possível fazer tudo parecer CRUD, mas talvez exija informações adicionais em nome do formalismo.

Tudo isto é pensado para proporcionar melhor performance, escalabilidade, simplicidade, flexibilidade, visibilidade, portabilidade e confiabilidade.

Cada um define como quiser sua API, ao contrário de SOAP onde tudo é definido oficialmente.

Hoje vamos cobrir a criação de serviços Web RESTful com WebDev v21. É muito fácil criar serviços Web do estilo SOAP (WDSL) com WebDev, mas criar serviços de estilo RESTful (HTTP GET) é um pouco mais difícil.

A boa notícia é v22 irá incluir a capacidade de criar RESTful Web Services, da mesma forma que podemos criar serviços SOAP atualmente. Mas e se você não pode esperar até o próximo ano? Você pode criar serviços Web RESTful com alguns truques na v21.

Vamos criar um serviço web simples que recupera o preço atual de um produto de windev-us.com. Vamos começar criando um serviço web estilo SOAP / WSDL.

Criando um serviço web SOAP

Primeiro, crio uma nova configuração no meu projeto. Como você já viu em alguns dos meus serviços anteriores, eu uso várias configurações para criar janelas, web, serviços da web, serviços do Windows, etc, todos do mesmo projeto.





Em seguida, precisamos criar uma estrutura que será usada para retornar o resultado ao serviço.





Eu geralmente incluem um sucesso booleano, como isso torna mais fácil para o programador usando o serviço para criar lógica para lidar com erros e, claro, uma mensagem de erro real. Em seguida, os campos que eu estou realmente retornando.

Você pode obter apenas sobre como fantasia como você precisa com isso.

Você pode definir uma estrutura chamada ResultSet e, em seguida, incluir essa estrutura dentro de cada uma das outras estruturas que você está retornando. Você pode incluir matrizes (Ordem e Detalhes da ordem, por exemplo).

Em seguida, precisamos criar um conjunto de procedimentos para o serviço web, esta será a interface "visível" para o serviço da Web eo que o WSDL é construído a partir.









Agora criamos um procedimento, que será uma chamada de serviço web.





Este procedimento é bastante simples. Estou usando a classe Gerenciador de Arquivos do Andy, mas você poderia facilmente fazer isso com os comandos Hxxxxx.

Se o código do produto for encontrado, o sucesso é definido como True e devolvemos as informações do produto, caso contrário, o sucesso é definido como falso e uma mensagem de erro é incluída.

Nós somos feitos criou o serviço da correia fotorreceptora !!! Antes de publicá-lo, devemos testá-lo. Como nós gostamos de testar serviços da web é através da criação de um procedimento de teste que chama o procedimento de "web service". Então eu vou criar outro conjunto de procedimentos e adicionar um procedimento para fazer uma chamada para getCurrentPrice e exibir os resultados.





Se executamos o procedimento de teste, vemos isso para a chamada com um Código de Produto Bom





E isso para a chamada com um código de produto ruim.





Tenha em atenção a ironia de que o nosso procedimento de teste tem tantas linhas de código como o nosso serviço web !!

Portanto, tudo o que resta é publicar o serviço da web. Isso é semelhante à publicação de um site, mas há algumas diferenças. Comece pressionando o botão "Gerar Serviço da Web"





Na primeira tela do assistente, pergunte para o nome do serviço web eo método utilizado para parâmetros, a menos que você tenha uma razão específica, a opção "Configuração direta de funções" é o que você deve usar.





A tela seguinte é a mesma que quando publicar um site e os elementos corretos devem ser escolhidos por padrão.





A próxima tela é onde a "mágica" acontece. Estes são os elementos acessíveis, o que significa que estes são os elementos que serão expostos através da interface do serviço web. É por isso que criou um conjunto separado de procedimentos para o serviço web para que possamos expor apenas aqueles.





Além da terminologia, a próxima tela é semelhante ao que você vê ao publicar um site.





Como estou publicando o serviço da web no mesmo URL do site, minhas configurações de publicação são as mesmas. Side Nota: Com certeza seria legal se o pcSoft nos desse um jeito de chegar ao botão "Exportar os parâmetros" sem passar por todo o assistente de publicação!





Next is another screen that is similar to publishing a web site, with just some terminology changes.





Mas uma dica importante, aviso por padrão o nome de implantação do serviço da web é o mesmo que o meu site, que é porque eles usam o nome do projeto para gerar o nome de implantação padrão. Se você estiver publicando um serviço da web e um site da Web para o mesmo URL. Atribuir ao serviço da Web um nome diferente, isso impede alguns problemas com os atalhos criados em suas entradas de host virtual ao publicar.





The rest of the screens are the same as those when publishing a web site, so I won’t include them here. When the service is published, you get two URL, one for the WSDL and one for a test page for the service. Keep track of URLs as you will need the WSDL once when you add the web service to another project.





O WSDL URL irá mostrar-nos o WSDL real, que é realmente apenas um arquivo XML. Tecnicamente, esse URL é tudo o que você precisa para dar a alguém, para que eles possam usar seu serviço da web. Mas para o AMOR DE PETE, por favor inclua também alguma documentação real. Vamos apenas dizer que nem todos os provedores de serviços da web acham que precisam!





O URL de teste mostra uma página com links para todos os procedimentos expostos, que naturalmente só temos um atualmente. Observe se você usar parâmetros complexos, como estruturas como parâmetros, não haverá um link, pois não há maneira de entrar na estrutura para testes.





Clicando no link dá-nos uma página de teste com prompts para os parâmetros do procedimento





Colocar o código do produto e pressionar "Test" retorna a resposta SOAP do serviço da web, que novamente é apenas um arquivo XML.





Assim, nosso serviço web SOAP foi criado e publicado. Vamos criar um projeto simples para usá-lo, então entraremos no serviço web RESTful. Eu criei um projeto WinDev simples, não há nenhuma análise desde que estamos recebendo "nossos dados" a partir do serviço web.

Precisamos adicionar nosso Serviço da Web ao projeto. Estou certo de que existem outros lugares no IDE para fazê-lo, mas eu uso o Project Explorer e clique direito em Web Services.






Lembre-se, eu disse que você precisaria que o URL WSDL, bem agora você vê por quê. Uma observação relativa à segurança dos serviços da Web, poderá notar neste ecrã que há um pedido de nome de utilizador e palavra-passe, se configurar o Web Server para que o directório do serviço Web necessite de um utilizador autenticado, o utilizador e a palavra-passe irão aqui. A maioria dos serviços da web nos dias de hoje não usa esse método e, em vez usar alguma forma de uma chave de API, Token etc que é incluir como um parâmetro da chamada. Talvez, num futuro webinar, possamos discutir as diferentes opções para proteger o seu serviço web, mas para este exemplo, não me importa quem solicite o preço de um dos nossos produtos!





Se tudo funcionou direito você receberá uma mensagem semelhante a esta





E também podemos ver os tipos de serviços da Web e os procedimentos no explorador de projetos agora.





Portanto, agora tudo o que precisamos fazer é codificar uma chamada para o serviço da web.





Muito semelhante ao nosso código de teste que criamos. Linha 9 e 10 são a chamada de serviço web real. Precisamos declarar uma variável de resultado. O bom é que não precisamos conhecer a estrutura, pois ela está incluída no serviço web que importamos, na verdade eu apenas arrastado o tipo para a tela de código para obter ajuda declarando a variável.

Executando o nosso aplicativo de teste e inserindo um código de produto, pressionando o botão SOAP, use o seguinte






Agora criamos com êxito um serviço web SOAP e, em seguida, o consumimos em outro projeto.

Parabéns, PCSoft definitivamente torna mais fácil para nós não eles!

Algumas notas de arrumação, apenas que poderia responder a algumas perguntas. O serviço Web SOAP pode ser criado no WinDev ou WebDev, no entanto, você precisa ter uma licença WAS (Web Application Server) para implantá-lo em um servidor dedicado ou cloud (http://www.alphaservers.com.br)

:merci:

Agora vamos criar um serviço da Web RESTful

Então, finalmente chegamos à parte do artigo que você realmente veio para! Primeiro vamos falar sobre por que você iria querer criar um serviço web RESTful, em primeiro lugar. Para mais simplesmente, serviços web RESTful são realmente apenas páginas da web que aceitam parâmetros e, em seguida, resultado são dados XML ou JSON sem qualquer formatação de página, etc

SOAP web serviços são bons porque eles são alguns que "auto documentação", mas nem todos os ambientes de desenvolvimento incluem a estrutura para usá-los sem você fazer todo o código de encanamento você mesmo. Enquanto isso, uma vez que o serviço web RESTful são apenas "páginas web", qualquer coisa que pode fazer um post HTTP pode consumir um serviço web RESTful, heck você pode até acessá-los a partir do código JavaScript!

Eu não vou alimentar o fogo do SABÃO versus RESTful guerras, além de dizer que em um momento parece que RESTful foi sobre a dizer e SOAP estava indo para ser o "novo" padrão. Mas, recentemente, a maré parece ter mudado e eu vi alguns dos serviços maiores da web que eu uso, começando a eliminar gradualmente seus serviços SOAP. Minha teoria sobre o porquê isso é, é que eles criaram serviços SOAP originalmente, provavelmente porque eles eram uma loja. Net, mas como eles ficaram populares eles tiveram muita pressão para fornecer serviços RESTful para que mais desenvolvedores pudessem acessá-los, e agora ele Tornou-se um fardo para apoiar e manter ambos. Uma vez que qualquer ambiente de desenvolvimento que pode usar SOAP também pode usar RESTful, mas nem todos os ambientes que podem usar RESTful, pode usar SOAP, pelo menos não sem um monte de trabalho extra, RESTful se torna o "menor denominador comum".

Como a menção v22 será fornecer-nos a capacidade de criar serviços RESTful, semelhante à forma como criamos serviços SOAP, na verdade eu estou esperando que vamos ser capazes de criar ambos a partir do mesmo código, o que nos impediria de ter que se preocupar com o SABÃO contra guerras RESTful! Mas por agora temos que usar alguns truques para criar um serviço web RESTful. Então vamos voltar ao WebDev.

Lembre-se de que eu disse RESTful serviços são realmente apenas páginas da web, então eu não preciso de uma nova configuração, eu basta mudar para a minha configuração do site.





E, em seguida, criar uma página, mas lembre-se que eu disse que são páginas com qualquer elementos de formatação, etc Como podemos fazer isso, bem eu começo por criar uma página usando Simple Layout, uma vez que o layout realmente não importa de qualquer maneira.





Nomeamos a página getCurrentPrice como esta será parte do URL pode fornecer alguns "auto documentação"





Em seguida, precisamos fazer desta uma página AWP para que ele possa ser chamado diretamente. Como as chamadas de serviço da Web são, por definição, sessões "sem conexão", não precisamos nos preocupar com o gerenciamento de contextos como estaríamos se desenvolvêssemos um aplicativo da Web AWP.





Agora vem a verdadeira magia, mas primeiro você tem que entender como WebDev reúne você páginas. Há duas partes a página HTML ea página AWP. A página HTML inclui tokens de suporte de lugar que são substituídos quando a página de AWP é executada. A primeira coisa que precisamos fazer é obter nossa página gerada, então pressione o botão Recompilar.





As páginas HTML (.HTM) estão sob sua pasta de projeto em uma pasta para o idioma, EUA no nosso caso. Não fique confuso esta não é a pasta dos EUA que está sob você _WEB pasta.





Agora entre na Descrição da Página e na guia Avançado, marque a caixa que diz "Não gere mais o arquivo HTML"





Isso nos permitirá editar o arquivo HTML sem se preocupar com WebDev sobrescrevê-lo. Agora, abra getCurrentPrice.htm que localizamos anteriormente. Inicialmente ele vai ficar assim





Você pode ver o [% lugar titular que a página AWP substitui. Agora queremos remover tudo, exceto [% GETCURRENTPRICE..HTMLENTETE%], que é a propriedade MyPage..HtmlHeader. Então agora o arquivo HTML se parece com isso.





Agora, na seção Declaração Global da nossa página, colocamos o seguinte código.





Como você pode ver a maior parte deste código é o mesmo que o que fizemos para o serviço SOAP. As diferenças são:

Linha 3 - obtém o parâmetro URL chamado ProductCode quando alguém chama o serviço web RESTful que usará este formato: http://windev-us.com/US/getCurrentPrice.awp… Este é o método padrão de passar parâmetros para Um RESTful serviço.

Em seguida, nosso resultado agora é definido como um XMLDocument, em vez de uma estrutura. PcSoft torna muito fácil para nós trabalhar com XML. Como você pode ver, tudo o que tenho a fazer é usar a sintaxe "ponto" para criar atributos XML em meu documento XML. Observação: estou fazendo um XML "aninhado", estou fazendo Result.Varaible. Isto é assim que nós começ um nó da "raiz", que é requerido para o XML da propriedade.

A única outra diferença é em vez de fazer um retorno que estamos definindo MyPage..HtmlHeader para o resultado XML, em vez de fazer um retorno. Observação: XMLStringBuild transforma nosso documento XML em uma seqüência formatada XML.

Se fizermos a chamada acima e visualizarmos a fonte da página resultante, veremos:





Que é o que alguém chamando um serviço RESTful esperaria ver.

Nada especial para cobrir sobre a implantação do serviço RESTful lembrar é realmente apenas uma "Página" do seu site para publicação do site publica o serviço RESTful também.

Para chamar o serviço web RESTful do nosso programa WinDev, usamos as funções HTTPRequest. Declaramos o URL com o parâmetro ProductCode como discutido acima, a Propriedade de Conteúdo do HTTPResponse contém o nosso XML, que usamos a função XMLOpen para entrar em um XMLDocument, então podemos exibir a informação da mesma forma que fizemos através da chamada SOAP.





Tempo Bônus - Conteúdo JSON

Devo mencionar que, embora eu esteja vendo mais e mais serviços RESTful oferecendo saída XML, JSON ainda é a saída padrão da maioria dos serviços RESTful. O JSON é mais um padrão de dados JavaScript e é mais provável que seja construído na maioria dos ambientes de desenvolvimento, na verdade a maioria dos navegadores tem funções JSON construídas neles para o lado do navegador manipulação de dados.

Os serviços web realmente agradáveis RESTful dar-lhe a opção de obter o resultado em qualquer formato. Então, vamos seguir em frente e adicionar essa capacidade ao nosso serviço web.

Nós mudamos o código da nossa página para o abaixo.





Nós adicionamos um segundo parâmetro "OutputFormat", então agora o URL para a chamada seria parecido com: https://www.windev-us.com/US/getCurrentPrice.awp…. Nota: o segundo parâmetro é prefixado com um & em vez de?

Se o OutputFormat não for especificado ou for algo diferente de JSON, então nós padrão para XML.

Declaramos um Variant e uma string usada para a saída JSON. Linha 24-27, são os mesmos que 18-21, exceto que em vez da variável XML estamos usando a variante. Novamente a capacidade de usar o "ponto" sintaxe sem ter que declarar uma estrutura é muito bom!

A linha 28 usa a função VarianttoJSON para transformar a variante em uma seqüência de caracteres formatada JSON. E, em seguida, a linha 29 define o cabeçalho para esse resultado.

O resultado da nossa chamada é assim:





Para consumir o serviço no formato JSON no nosso projeto WinDev nosso código se parece com este





Muito semelhante à versão XML, exceto que nossa propriedade de conteúdo agora contém os dados JSON e estamos usando a função JSONToVariant para converter a seqüência de caracteres JSON novamente em um Variant para que possamos processá-lo com a sintaxe "dot".

Conclusão

Isso encerra o artigo. Se você perdeu, este é um complemento do webinar localizado em nosso canal do YouTube.

:merci:

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 12 novembre 2016 - 20:34


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 16 janvier 2017 - 18:55
CODIGO

Declaration of Webservice(server)

strgetCurrentPrice is structure
Sucess is boolean
ErrorMessage is string
ProductCode is string
ProductDescription is string
Price is currency
END



Procedure getCurrentPrice(ProductCode)

recProduct is Product

mgrProduct is ProductManagementClass

thisResult is strgetCurrentPrice

recProduct = mgrProduct.RefreshByKey("ProductCode",ProductCode)

IF recProduct.ProductID > 0
thisResult.Sucess = True
thisResult.ProductCode = recProductCode
thisResult.ProductDescription = recProduct.ProductDescriptionWithPriceUpdates
thisResult.Price = recProduct.PriceUS
RESULT thisResult
ELSE
thisResult.Sucess = False
thisResult.ErrorMessage = "Product code not found"
RESULT thisResult
END




Procedure TestGetCurrentPrice()

DisplayResult is string = [

Sucess = %1
ErrorMessage = %2
ProductCode = %3
ProductDescription = %4
Price = 5%

]

theResult is webservice.strgetCurrentPrice

//Good Product
theResult = webservice.getCurrentPrice("WDBM21U")

Info (DisplayResult)

InfoBuild("GOOD Product" + CR + displayResult,
theResult.Success,
theResult.ErrorMessage,
theResult.ProductCode,
theResult.ProductDescription,
theResult.Price)

//BAD Product
theResult = webservice.getCurrentPrice("xxx")

Info (DisplayResult)

InfoBuild("BAD Product" + CR + displayResult,
theResult.Success,
theResult.ErrorMessage,
theResult.ProductCode,
theResult.ProductDescription,
theResult.Price)


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 16 janvier 2017 - 19:17
Procedure MyPage()

Productcode is string = PageParameter("ProductCode")

OutPutFormat is string = PageParameter("OutputFormat")

IF outputormat <> "JSON"
outputormat = "XML"
END

recProduct is Product
mgrProduct is ProductManagementClass
XMLResult is XMLDocument
varResult is variant
JsonResult is string

recProduct = mgrProduct.RereshByKey("ProductCode", ProductCode)

IF recProduct.ProductID > 0
IF OutputFormat = "XML"
XMLResult.Result.Sucess = True
XMLResult.Result.ProductCode = recProduct.ProductCode
XMLResult.Result.ProductDescription = recProduct.ProductDescriptionWithPriceUpdates
XMLResult.Result.Price = recProduct.PriceUS
MyPage..HTMLHeader = XMLBuildString(XMLResult)
ELSE
varResult.Result.Sucess = True
varResult.Result.ProductCode = recProduct.ProductCode
varResult.Result.ProductDescription = recProduct.ProductDescriptionWithPriceUpdates
varResult.Result.Price = recProduct.PriceUS
JsonResult = VariantToJSON(varResult)
MyPage..HTMLHeader = JsonResult
END
ELSE
IF OutputFormat = "XML"
XMLResult.Result.Sucess = False
XMLResult.Result.ErrorMessage = "Produto não encontrado"
MyPage..HTMLHeader = XMLBuildString(XMLResult)
ELSE
varResult.Result.Sucess = False
varResult.Result.ErrorMessage = "Produto não encontrado"
JsonResult = VariantToJSON(varResult)
MyPage..HTMLHeader = JsonResult
END
END


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Message modifié, 16 janvier 2017 - 19:20
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 16 janvier 2017 - 19:42
//Exemplo usando HttpRequet/HttpResult

SDisplayResult is string = [
Sucess = %1
ErrorMessage = %2
ProductCode = %3
ProductDescription = %4
Price = 5%
]

wsRequest is HTTPRequest

wsRequest.URL = "https://www.windev-us.com/US/getCurrentPrice.awp?ProductCode="+Edt_ProductID

wsResult is httoResponse

wsResult = HTTPSend(wsRequest)

XMLResult is XMLDocument = XMLOpen(wsResult..Content, fromString)

InfoBuild("Product:" + CR + displayResult,
XMLResult .Result.Success,
XMLResult .Result.ErrorMessage,
XMLResult .Result.ProductCode,
XMLResult .Result.ProductDescription,
XMLResult .Result.Price)


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 16 janvier 2017 - 19:57
Procedure ws_ConsultaProduto(outputormat)

sProductcode is string = PageParameter("ProductCode")

OutPutFormat is string = PageParameter("OutputFormat")

IF outputormat <> "JSON"
outputormat = "XML"
END

//recProduct is Product
//mgrProduct is ProductManagementClass

XMLResult is XMLDocument
varResult is Variant
JsonResult is string


ok = HExecuteQuery(QRY_Product_Select_ID,hQueryDefault,1)
IF ok = True THEN

FOR EACH QRY_Product_Select_ID

IF HFound(QRY_Product_Select_ID) THEN

IF QRY_Product_Select_ID.Reference > 0
IF OutPutFormat = "XML"
XMLResult.Result.Sucess = True
XMLResult.Result.ProductCode = QRY_Product_Select_ID.CodeBarreFabricant
XMLResult.Result.ProductDescription = QRY_Product_Select_ID.Description
XMLResult.Result.Price = QRY_Product_Select_ID.PrixHT
MyPage..HTMLHeader = XMLBuildString(XMLResult)
ELSE
varResult.Result.Sucess = True
varResult.Result.ProductCode = QRY_Product_Select_ID.CodeBarreFabricant
varResult.Result.ProductDescription = QRY_Product_Select_ID.Description
varResult.Result.Price = QRY_Product_Select_ID.PrixHT
JsonResult = VariantToJSON(varResult)
MyPage..HTMLHeader = JsonResult
END
ELSE
IF OutPutFormat = "XML"
XMLResult.Result.Sucess = False
XMLResult.Result.ErrorMessage = "Produto não encontrado"
MyPage..HTMLHeader = XMLBuildString(XMLResult)
ELSE
varResult.Result.Sucess = False
varResult.Result.ErrorMessage = "Produto não encontrado"
JsonResult = VariantToJSON(varResult)
MyPage..HTMLHeader = JsonResult
END
END

END

END

ELSE
varResult.Result.Sucess = False
varResult.Result.ErrorMessage = "Produto não encontrado"
JsonResult = VariantToJSON(varResult)
MyPage..HTMLHeader = JsonResult
END


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Message modifié, 16 janvier 2017 - 19:59
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 11 mai 2017 - 16:28




--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/