Pular para o conteúdo
  • Este tópico contém 4 respostas, 2 vozes e foi atualizado pela última vez 5 anos atrás por Avatar de José Laurindo ChiappaJosé Laurindo Chiappa.
Visualizando 5 posts - 1 até 5 (de 5 do total)
  • Autor
    Posts
  • #128322
    Avatar de Marcelino Saraiva MotaMarcelino Saraiva Mota
    Participante

      Alguém tem algum exemplo de utilização de webservice para o APEX? Estou tentando utilizar o viacep para pegar o endereço a partir do número do CEP, mas não esta dando certo.
      Define dessa forma no APEX 18.

      Referência Web do REST
      Nome (Valor Necessário) WsCEP
      URL (Valor Necessário) http://viacep.com.br/ws/
      Substituição de Proxy
      Autenticação Básica Não
      Método HTTP (Valor Necessário) GET
      Formato de Saída XML
      XPath de Resposta (Valor Necessário) /WsCep
      Namespace de Resposta
      Delimitador de Novo Registro
      Delimitador de Parâmetro

      Parâmetros de Entrada REST
      Tipo de Entrada Pares Nome/Valor
      Nome Tipo
      CEP string
      Format string

      Parâmetros de Saída REST
      Nome Caminho Tipo
      complemento 3 string
      bairro 4 string
      logradouro 2 string
      localidade 5 string
      uf 6 string
      unidade 7 string
      ibge 8 string
      gia 9 string

      #128994
      Avatar de José Laurindo ChiappaJosé Laurindo Chiappa
      Moderador

        Tudo jóia ? Então, especificamente com as novas features de WEBSERVICE do APEX 18c ainda não vi ser usado em lugar nenhum, mas para exemplos mais genéricos de consumo de webservice no APEX dá um look em https://universidadeapex.com.br/ua/2019/02/08/preenchimento-de-cep-automatico-via-cep/ , é um site dum Especialista em APEX que usa justamente o VIACEP como exemplo – no caso, na verdade ele não usa a API REST completa (só chama um PL/SQL na verdade, que via UTL_HTTP obtém dados do site), mas é um exemplinho básico, só pra vc testar que todo o necessário funciona….
        Para exemplo mais extenso, que REALMENTE usa a API REST, depois de ler a Documentação em https://docs.oracle.com/en/cloud/paas/db-schema-cloud/csdbu/calling-soap-and-restful-web-services.html , dá uma googlada por APEX 18c WEBSERVICE que vc deve achar alguma coisinha….

        []s

        Chiappa
        
        #129757
        Avatar de José Laurindo ChiappaJosé Laurindo Chiappa
        Moderador

          meio OFF-TOPIC, não tem relação direta com a sua pergunta, mas se vc não sabia, lembro que em https://www.oracle.com/technetwork/database/enterprise-edition/databaseappdev-vm-161299.html a Oracle disponibiliza uma VM não só já contendo APEX 18 mas também com um monte de Exemplos e tutos – dá um look lá, se algum deles te ajuda nos seus Estudos…

          []s

          Chiappa

          #131957
          Avatar de Marcelino Saraiva MotaMarcelino Saraiva Mota
          Participante

            Chiappa, boa noite!

            Muito obrigado pelas dicas!

            Utilizei o exemplo do site (https://universidadeapex.com.br/ua/2019/02/08/preenchimento-de-cep-automatico-via-cep/) que você indicou e fiz o seguinte:

            1 – Criei a tabela de cep, conforme indicado.

            2 – Criei a procedure abaixo para pegar os dados do cep e gravar na tabela. Fiz uma pequena correção para que ela gravasse todos os ceps pesquisados.

            create or replace PROCEDURE PR_PEGA_CEP
            (
            P_CEP IN NUMBER
            )
            AS
            v_count number;
            BEGIN
            select count(*) into v_count
            from cep
            where replace(extractValue(cep_xml,’/xmlcep/cep’),’-‘,”) = p_cep;
            if v_count = 0 then
            insert into cep(cep_id, cep_xml)
            select p_cep, utl_http.request(‘http://viacep.com.br/ws/’||p_cep||’/xml’) from dual;
            commit;
            end if;
            END PR_PEGA_CEP;

            3 – Atualizei a consulta aos dados do CEP conforme select gravando o retorno em variáveis globais:

            select
            upper(extractValue(cep_xml,’/xmlcep/logradouro’)) logradouro,
            upper(extractValue(cep_xml,’/xmlcep/complemento’)) complemento,
            upper(extractValue(cep_xml,’/xmlcep/bairro’)) bairro,
            upper(extractValue(cep_xml,’/xmlcep/localidade’)) cidade,
            upper(extractValue(cep_xml,’/xmlcep/uf’)) uf,
            upper(extractValue(cep_xml,’/xmlcep/unidade’)) unidade,
            upper(extractValue(cep_xml,’/xmlcep/ibge’)) ibge,
            upper(extractValue(cep_xml,’/xmlcep/gia’)) gia
            into :g_endereco, :g_COMPLEMENTO, :g_bairro, :g_cidade, :g_uf, :g_UNIDADE, :g_IBGE, :g_GIA
            from cep
            where replace(extractValue(cep_xml,’/xmlcep/cep’),’-‘,”) = :P38_cep;

            Dessa forma consigo recuperar o endereço a partir da digitação do CEP.

            Mas estou trabalhando para otimizar essa consulta e gerar direto as variaveis globais. Assim que terminar eu coloco aqui o resultado.

            []´s

            Marcelino

            #132077
            Avatar de José Laurindo ChiappaJosé Laurindo Chiappa
            Moderador

              Blz, quando terminar plz poste aqui e aí fica como um Exemplo a mais pra turma, jóia…

              Agora, como eu disse esse cara usa o método ANTIGO , que é obter o texto via protocolo HTTP e depois ficar parseando : isso funciona, ok, sem problemas, MAS sei que nas versões mais recentes do APEX (ie, v5 e v18) outros Métodos foram introduzidos, como acesso via API APEX_WEBSERVICE , ORDS e REST protocol – como eu disse, não programo diretamente em APEX mas sou Curioso na ferramenta, sei isso por ouvir falar…. Assim, em paralelo a esses testes, Recomendo que vc dê uma olhada em https://www.oracle.com/webfolder/technetwork/tutorials/obe/cloud/schema/50/Creating_RESTful_web_services/Creating_RESTful_web_services.html , https://blogs.oracle.com/apex/creating-a-crud-form-on-a-rest-service-with-apex-181 , http://www.apexninjas.com/blog/2011/05/using-rest-web-services-in-apex/ , https://oracle-base.com/articles/misc/apex_web_service-consuming-soap-and-rest-web-services e https://www.databasesystems.info/2015/03/oracle-apexwebservice-rest-api-call.html : de repente alguma dessas te dá um outro insight…. Além disso, no caso presente o método antigo funcionou sem problemas, mas VAI QUE daqui a pouco vc se depare com algum webservice que NÂO PERMITA acesso http(s) diretamente, aí são esses métodos mais novos que vão salvar o dia…

              []s

              Chiappa

            Visualizando 5 posts - 1 até 5 (de 5 do total)
            • Você deve fazer login para responder a este tópico.
            plugins premium WordPress