Marcado: apex, notafiscaleletronica, rest, webservice
- Este tópico contém 4 respostas, 2 vozes e foi atualizado pela última vez 5 anos, 9 meses atrás por José Laurindo Chiappa.
-
AutorPosts
-
5 de março de 2019 às 6:32 pm #128322Marcelino Saraiva MotaParticipante
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âmetroParâmetros de Entrada REST
Tipo de Entrada Pares Nome/Valor
Nome Tipo
CEP string
Format stringParâ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 string6 de março de 2019 às 5:03 pm #128994José Laurindo ChiappaModeradorTudo 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
7 de março de 2019 às 9:58 am #129757José Laurindo ChiappaModeradormeio 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
10 de março de 2019 às 7:01 pm #131957Marcelino Saraiva MotaParticipanteChiappa, 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
11 de março de 2019 às 8:56 am #132077José Laurindo ChiappaModeradorBlz, 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
-
AutorPosts
- Você deve fazer login para responder a este tópico.