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 "msxml6.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

oJsonParser.LoadJSON()

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.


Related Articles

No related articles were found.

Attachments

Visitor Comments

No visitor comments posted. Post a comment

Post Comment for "Consumindo e enviando dados de um webservice que utiliza o formato JSON."

To post a comment for this article, simply complete the form below. Fields marked with an asterisk are required.

   Name:
   Email:
* Comment:
* Enter the code below:

 

Article Details

Last Updated
2nd of December, 2015

Autor
Délio Damin

Would you like to...

Print this page  Print this page

Email this page  Email this page

Post a comment  Post a comment

 Subscribe me

Subscribe me  Add to favorites

Remove Highlighting Remove Highlighting

Edit this Article

Quick Edit


User Opinions

No users have voted.

How would you rate this answer?




Thank you for rating this answer.

Continue