Elipse Knowledgebase



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.


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



Artigos Relacionados

Este artigo não possui outros artigos relacionados.

Anexos

Comentários de Usuários

Nenhum comentário de usuário. Adicionar um comentário

Comentários do artigo 'Consumindo e enviando dados de um webservice que utiliza o formato JSON.'

Para adicionar um comentário neste artigo, preencha os campos abaixo. Os campos marcados com asterisco são obrigatórios.

   Nome:
   E-mail:
* Comentário:
* Digite o código abaixo:

 

Detalhes do Artigo

Última Atualização
2nd of December, 2015

Autor
Délio Damin

Você gostaria de...

Imprimir esta página  Imprimir esta página

Enviar por e-mail esta página  Enviar por e-mail esta página

Adicionar um comentário  Adicionar um comentário

 Avise-me

Avise-me  Adicionar aos favoritos

Remover Marcação Remover Marcação

Editar este Artigo

Edição Rápida


Opinião dos Usuários

Nenhum usuário votou ainda.

Como você classifica este artigo?




Obrigado pelo seu voto.

Continuar