Utilizar WEBService no APEX 18

Home Fóruns Web Utilizar WEBService no APEX 18

Visualizando 5 posts - 1 até 5 (de 5 do total)
  • Autor
    Posts
  • #128322

    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

    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

    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

    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

    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.