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. Renan Cano

    Renan Cano Membro Participativo

    Se der tudo certo vc deve ver um DISP com os dados:
    nomeFantasia = Prospecção
    razaoSocial= Prospecção
    cidade = null
    uf = null
  2. Alexandre

    Alexandre Membro Participativo

    @Renan Cano
    CA RA CA !!!! funcionou cara!

    Assim faço a segunda parte certo?
    alimento ali tb e me retorna certo?



    upload_2020-10-20_16-6-42.png
  3. Renan Cano

    Renan Cano Membro Participativo

    BOA RAPAZ! Se eu fiquei feliz imagina vc. Ja é um grande passo.

    Seguinte agora é repetir o processo no metodo consulta cliente, fica ligado que vai mudar o Patch entao é basicamente repetir o codigo mudando o patch para o request da consulta e no requestbuilder o json que vc tem q passar é o que veio como resposta, ai vc teria que ter outra temp-table que contenham as mesmas informações do response body dessa nova consulta.

    Aconselho fazer dois programa separados.

    Ai cria uma variavel para gravar o retorno e depois passa ela por parametro para o segundo programa que faz uma nova requisição mas agora na consulta.

    Como fazer mais detalhado.

    copia inteiro o esse codigo que passe, cria um parametro p-json do tipo JsonObject, muda a temp-table, muda o patch apaga a parte do codigo que tem o comentario //Criando e populando o Json e no lugar, dai la no requestbuilder poe o pjson.

    no primeiro programa depois da parte que faz o Cast para o oJasonRespObj vc da um RUN no programa 2.
    RUN programa-2 (INPUT oJsonRespObj).
  4. Alexandre

    Alexandre Membro Participativo

    @Renan Cano cara muito obrigado mesmo, tu nem sabe como vc me ajudou. a pressão tava grande aqui. agora eu me viro, mas se precisar de uma ajudinha posso te avisar?

    Cara me manda teu endereço aqui que quero te mandar um brinde. manda no "alexandrelanger@gmail.com"

    MUITOOO OBRIGADO
  5. Renan Cano

    Renan Cano Membro Participativo

    Que bom fico feliz por ter ajudado, eu sempre passo por aqui todos os dias pra ver se alguem ta precisando de um help, qualquer coisa me avisa é um prazer ajudar.
    Vou te mandar o email, ai qualquer coisa se eu demorar de ver por aqui pode me mandar um email.
    Alexandre curtiu isso.
  6. Alexandre

    Alexandre Membro Participativo

    Gostaria de deixar registrado o código que nosso amigo @Renan Cano desenvolveu para futuras consultas. Esse fonte me ajudou muito e gostaria de compartilhar. E meu muito agradecimento ao nosso colega @Renan Cano !

    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.*.
    USING OpenEdge.Net.HTTP.HttpHeaderBuilder.
    USING OpenEdge.Net.HTTP.HttpHeader.
    using OpenEdge.Net.URI.
    DEF TEMP-TABLE tt-dadosCadastrais
    FIELD codigoSistemaGestao AS CHAR FORMAT "x(200)"
    FIELD documento AS CHAR FORMAT "x(200)"
    FIELD razaoSocial AS CHAR FORMAT "x(200)"
    FIELD nome AS CHAR FORMAT "x(200)"
    FIELD fundacao AS CHAR FORMAT "x(200)"
    FIELD clienteDesde AS CHAR FORMAT "x(200)"
    FIELD origem AS CHAR FORMAT "x(200)"
    FIELD pais AS CHAR FORMAT "x(200)"
    FIELD inscricaoEstadual AS CHAR FORMAT "x(200)"
    FIELD situacaoCadastral AS CHAR FORMAT "x(200)"
    FIELD capitalSocial AS CHAR FORMAT "x(200)"
    FIELD naturezaJuridica AS CHAR FORMAT "x(200)"
    FIELD situacaoCadastralCNPJ AS CHAR FORMAT "x(200)"
    FIELD porte AS CHAR FORMAT "x(200)"
    FIELD regimeTributario AS CHAR FORMAT "x(200)"
    FIELD nomeMae AS CHAR FORMAT "x(200)"
    FIELD cpfMae AS CHAR FORMAT "x(200)"
    FIELD sexo AS CHAR FORMAT "x(200)"
    FIELD opcaoSimples AS CHAR FORMAT "x(200)"
    FIELD dataOpcaoSimples AS CHAR FORMAT "x(200)"
    FIELD dataExclusaoSimples AS CHAR FORMAT "x(200)"
    FIELD opcaoMei AS CHAR FORMAT "x(200)".
    DEF TEMP-TABLE tt-endereco
    FIELD endereco AS CHAR FORMAT "x(200)".
    //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 oJsonObj2 AS JsonObject NO-UNDO.
    DEF VAR oJsonObj3 AS JsonObject NO-UNDO.
    DEF VAR oJsonArray AS JsonArray NO-UNDO.
    DEF VAR json-longchar AS LONGCHAR NO-UNDO.
    DEF VAR myParser AS ObjectModelParser NO-UNDO.
    //CONTADOR
    DEF VAR i AS INT NO-UNDO.
    /* INICIO - Requisicao web */
    ASSIGN oClient = ClientBuilder:Build():Client //Constru‡Æo do Client
    oUri = NEW URI("http", "ndbvdeps", 74) //URI("metodo", "dominio, "porta")
    oUri:path = "/api/consultadados/clientes/v2". //URI:pATH: Demais partes da URL destino
    //Criando e populando o Json
    oJsonObj = NEW JsonObject().
    oJsonObj2 = NEW JsonObject().
    oJsonObj2:ADD("dadosCadastrais" , "true"). /*retorna*/
    oJsonObj2:ADD("resultadoAnalise" , "false").
    oJsonObj2:ADD("limiteAdotado" , "false").
    oJsonObj2:ADD("limiteTomado" , "false").
    oJsonObj2:ADD("endereco" , "true"). /*retorna*/
    oJsonObj2:ADD("bloqueio" , "false").
    oJsonObj2:ADD("questionario" , "false").
    oJsonObj2:ADD("participacaoEmpresas", "false").
    oJsonObj2:ADD("quadroSocietario" , "false").
    oJsonObj2:ADD("metricas" , "false").
    oJsonObj2:ADD("percentuais" , "false").
    oJsonObj2:ADD("informacaoCadastral" , "true").
    oJsonObj2:ADD("grupo" , "false").
    oJsonObj2:ADD("ultimasConsultas" , "0").
    oJsonObj2:ADD("detalhamentoMetricas", "false").
    oJsonObj2:ADD("inscricoesEstaduais" , "false").
    oJsonObj2:ADD("ramosAtividade" , "false").
    oJsonObj:ADD("tipo" , "J").
    oJsonObj:ADD("documento" , "82749987000106").
    oJsonObj:ADD("nomeOrigem" , "NETZSCH").
    oJsonObj:ADD("opcoesDadosExtracao" , oJsonObj2).
    //FAZ A REQUISICAO UTILIZANDO O POST
    oReq = RequestBuilder:pOST(oUri, oJsonObj):REQUEST.
    oResp = oClient:EXECUTE(oReq).
    /* FINAL - requisi‡Æo web */
    /* VERIFICA SE O JSON EH UM JsonObject */
    IF TYPE-OF(oResp:Entity, JsonObject) THEN DO:
    ASSIGN oJsonRespObj = CAST(oResp:Entity, JsonObject).
    oJsonRespObj:WriteFile("C:\temp\index.json").
    //Json Object Dados Cadastrais
    ASSIGN json-longchar = oJsonRespObj:GetJsonText("dadosCadastrais").

    oJsonObj = NEW JsonObject().
    myParser = NEW ObjectModelParser().
    oJsonObj = CAST(myParser:parse(json-longchar), JsonObject). //É esse cara aki
    CREATE tt-dadosCadastrais.
    ASSIGN tt-dadosCadastrais.codigoSistemaGestao = oJsonObj:GetCharacter("codigoSistemaGestao")
    tt-dadosCadastrais.documento = oJsonObj:GetCharacter("documento")
    tt-dadosCadastrais.razaoSocial = oJsonObj:GetCharacter("razaoSocial")
    tt-dadosCadastrais.nome = oJsonObj:GetCharacter("nome")
    tt-dadosCadastrais.fundacao = oJsonObj:GetCharacter("fundacao")
    tt-dadosCadastrais.clienteDesde = oJsonObj:GetCharacter("clienteDesde")
    tt-dadosCadastrais.origem = oJsonObj:GetCharacter("origem")
    tt-dadosCadastrais.pais = oJsonObj:GetCharacter("pais")
    tt-dadosCadastrais.inscricaoEstadual = oJsonObj:GetCharacter("inscricaoEstadual")
    tt-dadosCadastrais.situacaoCadastral = oJsonObj:GetCharacter("situacaoCadastralInscricaoEstadual")
    tt-dadosCadastrais.capitalSocial = oJsonObj:GetCharacter("capitalSocial")
    tt-dadosCadastrais.naturezaJuridica = oJsonObj:GetCharacter("naturezaJuridica")
    tt-dadosCadastrais.situacaoCadastralCNPJ = oJsonObj:GetCharacter("situacaoCadastralCNPJ")
    tt-dadosCadastrais.porte = oJsonObj:GetCharacter("porte")
    tt-dadosCadastrais.regimeTributario = oJsonObj:GetCharacter("regimeTributario")
    tt-dadosCadastrais.nomeMae = oJsonObj:GetCharacter("nomeMae")
    tt-dadosCadastrais.cpfMae = oJsonObj:GetCharacter("cpfMae")
    tt-dadosCadastrais.sexo = oJsonObj:GetCharacter("sexo")
    tt-dadosCadastrais.opcaoSimples = oJsonObj:GetCharacter("opcaoSimples")
    tt-dadosCadastrais.dataOpcaoSimples = oJsonObj:GetCharacter("dataOpcaoSimples")
    tt-dadosCadastrais.dataExclusaoSimples = oJsonObj:GetCharacter("dataExclusaoSimples")
    tt-dadosCadastrais.opcaoMei = oJsonObj:GetCharacter("opcaoMei").
    //Json Object Dados Enderecos
    ASSIGN json-longchar = oJsonRespObj:GetJsonText("enderecos").
    oJsonObj = NEW JsonObject().
    oJsonObj = CAST(myParser:parse(json-longchar), JsonObject).
    CREATE tt-endereco.
    ASSIGN tt-endereco.endereco = oJsonObj:GetJsonText("endereco").
    END.
    /* FINAL - Valida o tipo de retorno, se for Json processa normalmente */
    //EXIBINDO DADOS DA TEMP-TABLE
    FOR EACH tt-dadosCadastrais NO-LOCK:
    MESSAGE tt-dadosCadastrais.codigoSistemaGestao skip
    tt-dadosCadastrais.documento skip
    tt-dadosCadastrais.razaoSocial skip
    tt-dadosCadastrais.nome skip
    tt-dadosCadastrais.fundacao skip
    tt-dadosCadastrais.clienteDesde skip
    tt-dadosCadastrais.origem skip
    tt-dadosCadastrais.pais skip
    tt-dadosCadastrais.inscricaoEstadual skip
    tt-dadosCadastrais.situacaoCadastral skip
    tt-dadosCadastrais.capitalSocial skip
    tt-dadosCadastrais.naturezaJuridica skip
    tt-dadosCadastrais.situacaoCadastralCNPJ skip
    tt-dadosCadastrais.porte skip
    tt-dadosCadastrais.regimeTributario skip
    tt-dadosCadastrais.nomeMae skip
    tt-dadosCadastrais.cpfMae skip
    tt-dadosCadastrais.sexo skip
    tt-dadosCadastrais.opcaoSimples skip
    tt-dadosCadastrais.dataOpcaoSimples skip
    tt-dadosCadastrais.dataExclusaoSimples skip
    tt-dadosCadastrais.opcaoMei skip
    VIEW-AS ALERT-BOX INFO BUTTONS OK.
    END.
    FOR EACH tt-endereco NO-LOCK:
    MESSAGE tt-endereco.endereco SKIP
    VIEW-AS ALERT-BOX INFO BUTTONS OK.
    END.
    nelsonbsjr e Renan Cano curtiram isso.

Compartilhe esta Página