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.
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 em nosso canal do YouTube.



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

100% thumbs up 0% thumbs down (6 votes)

How would you rate this answer?




Thank you for rating this answer.

Continue