Consumindo e enviando dados de um webservice que utiliza o formato JSON.

1. Introdução

O JSON (JavaScript Object Notation) é um modelo leve para armazenamento e transmissão de informações no formato texto. Embora simples, este modelo tem sido bastante utilizado por aplicações web devido a sua capacidade de estruturar informações de uma forma mais compacta em comparação com o modelo XML.

Em JSON, os dados são apresentados da seguinte forma:

Um objeto é um conjunto desordenado de pares nome/valor; ele começa com { (chave de abertura) e termina com } (chave de fechamento). Cada nome é seguido por : (dois pontos), e os pares nome/valor são seguidos por , (vírgula).

Um array é uma coleção de valores ordenados; ele começa com [ (colchete de abertura) e termina com ] (colchete de fechamento). Os valores são separados por , (vírgula).

Exemplo de uma estrutura JSON:

[
    {
        “id”: 1,
        “username”: “ElipseRS”,
        “password”: “Eli123”
    },
    {
        “id”: 2,
        “username”: “ElipseSP”,
        “password”: “EliSP123”
    },
    {
        “id”: 3,
        “username”: “ElipseMG”,
        “password”: “ElipMG123”
    }
]

Neste artigo, veremos como consumir e enviar dados através do Elipse E3 a um webservice desenvolvido em formato JSON.

2. Webservice JSON

Um webservice no formato JSON foi desenvolvido para a simulação de valores. Quanto à confirmação dos dados da solicitação HTTP: no POST, foram retornados os valores enviados e uma mensagem de sucesso no envio (no formato JSON); no GET, foram retornados valores conforme padrão estabelecido pelo protocolo.

Formato do webservice utilizado:

[
{
“id”:1,
“email”:”scherer@elipse.com.br”,
“username”:”scherer”,
“password”:”password”
},
{
“id”:2,
“email”:”delio@elipse.com.br”,
“username”:”delio”,
“password”:”password123″
},
{
“id”:3,
“email”:”enrico@elipse.com.br”,
“username”:”enrico”,
“password”:”password321″
}
]

3. Integrando o Elipse E3 com o Webservice JSON

Assim como o XML, o VBScript não suporta o tratamento do JSON de modo nativo. Uma alternativa é utilizar uma classe em VBScript que faça a análise sintática (parsing) de uma string em JSON (iniciada com “{” ou com “[“), ou que opcionalmente faça uma chamada HTTP utilizando o componente “msxml2.ServerXMLHTTP” e avalie a string JSON retornada por esta chamada.

NOTA: A string utilizada para a criação do componente Microsoft® XML Core Services (MSXML) pode variar de acordo com a versão disponível no sistema. É possível verificar quais DLLs “msxml” estão presentes no computador na pasta C:\Windows\system32.

4. Consumindo dados do webservice (GET)

O script abaixo foi utilizado para realizar a leitura dos dados do webservice:

Sub CommandButton1_Click()
Dim oJsonParser
Set oJsonParser = new aspJSON   'Criação do objeto tipo aspJSON

'Inserir endereço do Webservice
URL = "http://www.filltext.com/?rows=3&id={index}&email={email}&username={username}&password={randomString|5}&pretty=true"
oJsonParser.LoadJSON(URL) 'Carregando objeto JSON
For i = 0 to oJsonParser.data.count - 1
   Screen.Item("ID"&i&"").Value = oJsonParser.data(i).item("id")
   Screen.Item("Email"&i&"").Value = oJsonParser.data(i).item("email")
   Screen.Item("User"&i&"").Value = oJsonParser.data(i).item("username"
   Screen.Item("Password"&i&"").Value = oJsonParser.data(i).item("password")
Next 
End Sub

 

NOTA: A classe aspJSON referenciada acima não foi exibida, mas ela é responsável por realizar o parsing em uma string JSON. Na aplicação exemplo em anexo, esta classe estará disponível.

5. Escrevendo no Webservice (POST)

Para realizar a escrita no webservice, foi utilizado o objeto ServerXMLHTTP, que fornece métodos e propriedades que permitem estabelecer uma conexão HTTP entre arquivos ou objetos em diferentes servidores web. O script abaixo foi utilizado para realizar a escrita dos dados no webservice:

Sub CommandButton2_Click()
Dim objXmlHttpMain , URL
strJSONToSend = "{""id"": ""0"", ""email"": ""elipse@elipse.com.br"", ""username"": ""Elipse"", ""password"": ""Elipse123""}"
URL="http://scherer:5000/users/" 'Endereço do webservice  
Set objXmlHttpMain = CreateObject("Msxml2.ServerXMLHTTP")
On Error Resume Next 
objXmlHttpMain.open "POST",URL, False 
If Err Then            'handle errors
   Msgbox Err.Description & " [0x" & Hex(Err.Number) & "]"
End If
On Error Goto 0 
objXmlHttpMain.setRequestHeader "Content-Type", "application/json"
objXmlHttpMain.send strJSONToSend
strResponse = objXmlHttpMain.responseText
msgbox strResponse
End Sub

 

6. Aplicação exemplo

O exemplo em anexo foi desenvolvido na versão 4.7 build 252 do Elipse E3 e projetado para ser compatível com a estrutura do webservice ilustrado no item 2. Para atender a outros formatos, será preciso adaptá-lo, e consequentemente, o endereço da URL do webservice deve ser alterado no script.
Em anexo, também há um exemplo que realiza a leitura de um Webservice JSON via Driver Elipse VBScript.


Assista o vídeo relacionado a este artigo também em nosso canal do YouTube.

 

Anexos:

JSON.zip
Class_aspJSON.txt
JSON_VBScriptDriver.zip

 

Este artigo foi útil? Was this post helpful?
Yes1
No0

Deixe seu Comentário

Seu endereço de e-mail não será publicado. Campos marcados com asterisco são obrigatórios *