Hoje vou mostrar como fazer uma integração com JotForms utilizando FWRest e JSON.
Para quem não conhece, JotForms é um sistema online de formulários, similar ao Google Forms. Nesse link tem toda a documentação – https://api.jotform.com/docs/#user-forms
Na integração, usaremos a classe FWRest, e é necessário no header informar a chave da API que o pessoal do JotForms disponibiliza para a empresa contratante.
Depois disso conseguimos usar o Get ou Set dos métodos citados na documentação.
Por último, é retornado um JSON, e conseguimos fazer as tratativas de informação com FWJsonDeserialize ou com JsonObject.
Abaixo o exemplo desenvolvido conforme as explicações acima:
//Bibliotecas #Include "Totvs.ch" /*/{Protheus.doc} zJotTst Exemplo de GET em uma integração com JotForms @author Atilio @since 01/11/2020 @version 1.0 @type function @obs No exemplo abaixo é usado o /user/forms com Get, mas é possível usar Set e outros métodos conforme documentação disponível - https://api.jotform.com/docs/#user-forms /*/ User Function zJotTst() Local aArea := GetArea() Local cURL := "api.jotform.com" Local aHeaderStr := {} Local oRestClient := FwRest():New(cUrl) Local cAPIKey := "Seu Token de Acesso" Local oJSON Local cDtIni := "2020-11-01" Local cResult //Se o token tiver preenchido If !Empty(cAPIKey) //No cabeçalho define o Token usado aAdd(aHeaderStr, 'APIKEY: ' + cAPIKey) //Iremos definir a integração como /user/forms e iremos filtrar criações a partir da data 01/11/2020 oRestClient:SetPath('/user/forms?filter={%22created_at:gt%22:%22' + cDtIni + '%2000:00:00%22}%20') //Chama o método Get do FWRest, armazena o resultado em uma variável If oRestClient:Get( aHeaderStr ) cResult := oRestClient:GetResult() //Se o JSON for deserializado, significa que deu certo, e aí basta pegar os atributos dentro do oJSON e fazer as tratativas If (FWJsonDeserialize(cResult, @oJSON)) Alert('Json foi deserializado') EndIf //Senão, pega os erros, e se quiser exibir, basta adicionar um Alert Else cLastError := oRestClient:GetLastError() cErrorDetail := oRestClient:GetResult() EndIf EndIf RestArea(aArea) Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.