1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Urgente API REST

Discussão em 'Progress 4GL' iniciado por Alexandre, Setembro 28, 2020.

  1. Alexandre

    Alexandre Membro Participativo

    @Renan Cano aqui no primeiro caso:
    {

    "tipo": "J ou F",

    "documento": "CNPJ",

    "nomeOrigem": "NETZSCH",

    "codigoSistemaGestaoInformacaoCadastral": "NETZSCH",

    }

    eu tenho que passar esses parâmetros e retornar código 200 ok.

    depois faço outra consulta passando os parâmetros e retornando cidade... pais ... nome mãe etc....

    Soh o diacho eu não sei passar esses parâmetros.



    eu peguei uns exemplos aqui:
    /* INI - requisicao web */
    ASSIGN oClient = ClientBuilder:Build():Client
    oUri = NEW URI("http", "ndbvdeps", 74) /* URI("metodo", "dominio", "porta") */
    oUri:path = "/api/analise/cliente/J/82749987000106/NETZSCH/NETZSCH". /* URI:path: demais partes da URL destino */

    /* Faz a requisicao utilizando GET */
    oReq = RequestBuilder:GET(oUri):REQUEST.
    oResp = oClient :EXECUTE(oReq).
    /* FIM - requisicao web */
  2. Alexandre

    Alexandre Membro Participativo

    @Renan Cano olha soh uma luz!!!
    Na web eu passo:
    {
    "tipo": "J",
    "documento": "82749987000106",
    "nomeOrigem": "NETZSCH",
    "codigoSistemaGestaoInformacaoCadastral": "NETZSCH",
    }


    e la em baixo no Response Body tem o retorno!
    Mas eu nao sei como colocar isso no progress.

    /* INI - requisicao web */
    ASSIGN oClient = ClientBuilder:Build():Client
    oUri = NEW URI("http", "ndbvdeps", 74) /* URI("metodo", "dominio", "porta") */
    oUri:path = "/api/analise/cliente/J/82749987000106/NETZSCH/NETZSCH". /* URI:path: demais partes da URL destino */

    /* Faz a requisicao utilizando GET */
    oReq = RequestBuilder:GET(oUri):REQUEST.
    oResp = oClient :EXECUTE(oReq).
    /* FIM - requisicao web */
    IF oResp:StatusCode = 200 THEN DO:
    MESSAGE "ENCONTRADO"
    VIEW-AS ALERT-BOX INFO BUTTONS OK.
    END.
    ELSE DO:
    MESSAGE "NÃO ENCONTRADO"
    VIEW-AS ALERT-BOX INFO BUTTONS OK.
    END.


    upload_2020-10-20_14-42-30.png
  3. Renan Cano

    Renan Cano Membro Participativo

    Ah entendi o porque usam post, o sistema primeiro recebe um informação e faz uma validação e depois ele manda um retorno. entao é POST msm que vamos ter que usar, só pra te dar mais trabalho hehehe.

    Esse codigo que vc tem é pra GET, vamos mudar algumas coisas e tentar ve se recebemos o mesmo response Body pelo progress, a principio vamos gravar em um arquivo para visualizar. ja te mando um codigo pra vc testar.
  4. Alexandre

    Alexandre Membro Participativo

  5. Renan Cano

    Renan Cano Membro Participativo

    meu querido você pode postar aqui o responde body completo, ali no print ta cortando um pedaço, to fazendo o codigo aqui, espero que de certo.
  6. Renan Cano

    Renan Cano Membro Participativo

    Nao precisa mais do restante do Reponse Body, fiz com alguns pra ver o retorno (nome fantasia, razao social, cidade, uf), segue codigo:

    USING OpenEdge.Core.String.
    USING OpenEdge.Net.HTTP.ClientBuilder.
    USING OpenEdge.Net.HTTP.IHttpClient.
    USING OpenEdge.Net.HTTP.IHttpRequest.
    USING OpenEdge.Net.HTTP.IHttpResponse.
    USING OpenEdge.Net.HTTP.RequestBuilder.
    USING OpenEdge.Net.HTTP.Credentials.
    USING Progress.Lang.Object.
    USING Progress.Json.ObjectModel.JsonArray.
    USING Progress.Json.ObjectModel.JsonObject.
    USING OpenEdge.Net.HTTP.HttpHeaderBuilder.
    USING OpenEdge.Net.HTTP.HttpHeader.
    using OpenEdge.Net.URI.


    DEF TEMP-TABLE tt-cliente
    FIELD nomeFantasia AS CHAR FORMAT "x(50)"
    FIELD razaoSocial AS CHAR FORMAT "x(50)"
    FIELD cidade AS CHAR FORMAT "x(50)"
    FIELD uf AS CHAR FORMAT "x(10)".

    //RESPONSAVEL POR TRATAR REQUISIÇÃO E O RETORNO HTTP
    DEF VAR oClient AS IHttpClient NO-UNDO.

    //CONTEM O DESTINO DA REQUISIÇÃO
    DEF VAR oURI AS URI NO-UNDO.

    //oReq e oResp CONTEM OS DADOS DA REQUISIÇÃO E DA RESPOSTA
    DEF VAR oReq AS IHttpRequest NO-UNDO.
    DEF VAR oResp AS IHttpResponse NO-UNDO.

    //RESPONSAVEL PELAS CREDENCIAIS
    DEF VAR oCreds AS credentials NO-UNDO.


    //VARIAVEIS PARA RECEBER OS DADOS EM JSON
    DEF VAR oJsonRespObj AS JsonObject NO-UNDO.
    DEF VAR oJsonRespArray AS JsonArray NO-UNDO.
    DEF VAR oJsonObj AS JsonObject NO-UNDO.
    DEF VAR oJsonArray AS JsonArray NO-UNDO.

    //CONTADOR
    DEF VAR i AS INT NO-UNDO.


    /* INICIO - requisição web */

    ASSIGN oClient = ClientBuilder:Build():Client //Construção do Client
    oUri = NEW URI("http", "ndbvdeps", 74) //URI("metodo", "dominio, "porta")
    oUri:path = "/api/analise/cliente". //URI:pATH: Demais partes da URL destino

    //Criando e populando o Json
    oJsonObj = NEW JsonObject().
    oJsonObj:ADD("tipo","J").
    oJsonObj:ADD("documento", "82749987000106").
    oJsonObj:ADD("nomeOrigem", "NETZSCH").
    oJsonObj:ADD("codigoSistemaGestaoInformacaoCadastral", "NETZSCH").

    //FAZ A REQUISIÇÃO UTILIZANDO O POST
    oReq = RequestBuilder:pOST(oUri, oJsonObj):REQUEST.

    oResp = oClient:EXECUTE(oReq).


    /* FINAL - requisição web */


    /* VERIFICA SE O JSON É UM JsonObject */
    IF TYPE-OF(oResp:Entity, JsonObject) THEN DO:

    oJsonRespObj = CAST(oResp:Entity, JsonObject).

    CREATE tt-cliente.

    ASSIGN tt-cliente.nomeFantasia = oJsonRespObj:GetCharacter("nomeFantasia")
    tt-cliente.razaoSocial = oJsonRespObj:GetCharacter("razaoSocial")
    tt-cliente.cidade = oJsonRespObj:GetCharacter("cidade")
    tt-cliente.uf = oJsonRespObj:GetCharacter("uf").

    END.

    /* FINAL - Valida o tipo de retorno, se for Json processa normalmente */

    //EXIBINDO DADOS DA TEMP-TABLE
    FOR EACH tt-cliente NO-LOCK:

    DISP tt-cliente.nomeFantasia
    tt-cliente.razaoSocial
    tt-cliente.cidade
    tt-cliente.uf
    WITH SIDE-LABELS WIDTH 400 TITLE "Retorno GET".
    END.

Compartilhe esta Página