Boa tarde.
Gostaria de saber se algum conhece como eu utilizo um serviço de webservice no oracle.
tenho um webservice que eu criei e esta rodando num servidor tomcat, agora eu precisava acessar esse webservice com a minha aplicação em oracle, preciso acessar atraves de uma função em pl ou pode ser pelo forms 6i.
alguém sabe como da para fazer isso??
Acessar um webservice com plsql
- fabdepaula
- Rank: Estagiário Pleno
- Mensagens: 4
- Registrado em: Qui, 15 Mai 2008 8:53 pm
- Localização: Araraquara -SP
-
- Rank: Estagiário Júnior
- Mensagens: 2
- Registrado em: Sex, 15 Ago 2008 4:02 pm
- Localização: São Paulo - SP
Olha, eu nunca fiz nada como isso mas você provavelmente precisará usar o pacote UTL_CONNECTION para abrir uma conexão pela porta 80 e depois o método WRITE (acho que esse que escreve) montando um "envelope" SOAP. Mais uma vez, senão estiver errado o SOAP será parecido com isso;
Caso ninguém responda sua mensagem, tentarei fazer um exemplo simples em casa e posto para você.
Você tem algum webservice de teste (um publico)
Abraços
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="URN DO WEB SERVICE AQUI">
<soapenv:Header/>
<soapenv:Body>
<urn:NOME DO SERVICO AQUI soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
SEU XML AQUI.
</urn:NOME DO SERVICO AQUI >
</soapenv:Body>
</soapenv:Envelope>
Você tem algum webservice de teste (um publico)
Abraços
-
- Rank: Programador Sênior
- Mensagens: 45
- Registrado em: Qua, 31 Out 2007 9:30 am
- Localização: Uberlândia
Rafael Rocha
Olá,
Não tenho nenhum exemplo para te dar, mais sei que você pode fazer da seguinte maneira:
1°) Utilizar o Oracle Jdeveloper para montar uma classe de acesso ao seu webservice (ele faz quase tudo automaticamente).
2°) Importar o Java de acesso para o Oracle. Pesquise como fazer usando o Load Java.
3°) Criar um stored procedure que acessa o Java. Daí você pode usa-lo tanto no banco quanto no Forms.
Rafael
Não tenho nenhum exemplo para te dar, mais sei que você pode fazer da seguinte maneira:
1°) Utilizar o Oracle Jdeveloper para montar uma classe de acesso ao seu webservice (ele faz quase tudo automaticamente).
2°) Importar o Java de acesso para o Oracle. Pesquise como fazer usando o Load Java.
3°) Criar um stored procedure que acessa o Java. Daí você pode usa-lo tanto no banco quanto no Forms.
Rafael
-
- Rank: Programador Júnior
- Mensagens: 16
- Registrado em: Ter, 17 Mai 2005 4:24 pm
- Localização: curitiba pr
A rotina abaixo permite ler uma página html
DECLARE
c utl_tcp.connection; -- TCP/IP connection to the Web server
ret_val pls_integer;
BEGIN
c := utl_tcp.open_connection(remote_host =>'www.site.com.br', -- remote_host =>
remote_port => 80, --
--charset => 'US7ASCII',
tx_timeout => 5); -- open connection -- charset =>
ret_val := utl_tcp.write_line(c, 'GET / HTTP/1.0'); -- send HTTP request
ret_val := utl_tcp.write_line(c);
BEGIN
LOOP
dbms_output.put_line(utl_tcp.get_line(c, TRUE)); -- read result
END LOOP;
EXCEPTION
WHEN utl_tcp.end_of_input THEN
NULL; -- end of input
END;
utl_tcp.close_connection(c);
EXCEPTION WHEN OTHERS THEN
utl_tcp.close_connection(c);
END;
-
- Rank: Programador Sênior
- Mensagens: 45
- Registrado em: Qua, 31 Out 2007 9:30 am
- Localização: Uberlândia
Rafael Rocha
Não entendi o exemplo acima!
serve para trabalhar com SOAP??
serve para trabalhar com SOAP??
-
- Rank: Programador Júnior
- Mensagens: 29
- Registrado em: Qua, 13 Ago 2008 6:57 pm
- Localização: Blumenau - SC
Segue um exemplo para se conectar a um webservice via soap, no meu caso este código esta dentro de um loop, pois estou enviando varias notas para o webservice, assim coloco a opção TRUE
no set_persistence, para que ele mantenha a conexão aberta, desta forma não preciso abri-la a cada envio de nota, e na ultima nota eu coloco o set_persistence como false, assim acabando o processo ele fecha automaticamente a conexão.
a variavel WW_ENV possuo o envelope, a mensagem soap completa.
WW_XML, contem todo o valor das notas em xml que estou enviando para o webservice, ou seja lá no webservice no metodo set_notas tem a variavel de entrada Notas.
WW_URL possue o endereço do webservice.
http_req, possue o chamado do webservice.
http_resp possue o valor da resposta do webservice.
no set_persistence, para que ele mantenha a conexão aberta, desta forma não preciso abri-la a cada envio de nota, e na ultima nota eu coloco o set_persistence como false, assim acabando o processo ele fecha automaticamente a conexão.
a variavel WW_ENV possuo o envelope, a mensagem soap completa.
WW_XML, contem todo o valor das notas em xml que estou enviando para o webservice, ou seja lá no webservice no metodo set_notas tem a variavel de entrada Notas.
WW_URL possue o endereço do webservice.
http_req, possue o chamado do webservice.
http_resp possue o valor da resposta do webservice.
WW_ENV:='<?xml version="1.0" encoding="utf-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns2="http://xml.apache.org/xml-soap">
<S:Body>
<ns2:setNotas xmlns:ns2="http://Serv/">
<Cliente>1</Cliente>
<Notas>'||WW_XML||'</Notas>
</ns2:setNotas>
</S:Body>
</S:Envelope>';
begin
http_req := utl_http.begin_request(WW_URL, 'POST',utl_http.HTTP_VERSION_1_1);
utl_http.set_persistent_conn_support(http_req,true);
----Se você setar como TRUE segnifica que a conexão ficará aberta, desta forma você pode acessar o webservice varias vezes sem fechar a conexão aumentando a performance, se for acessa-lo apenas 1 vez então set como false ele fecha a conexão automaticamente.
utl_http.set_body_charset(http_req, 'UTF-8');
UTL_HTTP.set_authentication(http_req, 'login', 'senha', 'Basic', TRUE );
utl_http.set_header(http_req, 'Content-Type', 'text/xml');
utl_http.set_header(http_req, 'Content-Length', length(WW_ENV));
utl_http.set_header(http_req, 'SOAPAction', 'setNotas');
utl_http.write_text(http_req,WW_ENV);
http_resp := utl_http.get_response(http_req);
IF (http_resp.status_code =utl_http.HTTP_OK ) THEN
utl_http.read_text(http_resp, WW_ENV_RESP);
utl_http.end_response(http_resp);
-
- Rank: Programador Júnior
- Mensagens: 29
- Registrado em: Qua, 13 Ago 2008 6:57 pm
- Localização: Blumenau - SC
há a forma de montar o pacote soap varia de webservice para webservice, no meu caso como utilizo um webservice java, que está em um servidor tomcat, então adiciono a tag xmlns:ns2="http://xml.apache.org/xml-soap">
no caso de servidores .net esta tag não é necessaria, mas outras são, ai o melhor é estudar o webservice e como montar o envelope correto para que ele funcione.
no caso de servidores .net esta tag não é necessaria, mas outras são, ai o melhor é estudar o webservice e como montar o envelope correto para que ele funcione.
-
- Rank: Analista Sênior
- Mensagens: 153
- Registrado em: Ter, 27 Mai 2008 1:31 pm
- Localização: Rio de Janeiro - RJ
-
- Rank: Estagiário Sênior
- Mensagens: 9
- Registrado em: Sex, 27 Ago 2010 12:16 pm
- Localização: são paulo - sp
Boa Tarde a todos
Preciso enviar lotes de Nota Fiscal de Serviço e gostaria de saber também se alguém já fez algo parecido gostaria de enviar os lotes através de uma tela no forms ou seja gostaria de fazer tudo através do oracle, hoje a prefeitura de são paulo valida um arquivo txt de notas fiscais de serviço mas existem algumas cidades que exigem o envio através de webservice alguém tem algo como exemplo ? obrigado
Preciso enviar lotes de Nota Fiscal de Serviço e gostaria de saber também se alguém já fez algo parecido gostaria de enviar os lotes através de uma tela no forms ou seja gostaria de fazer tudo através do oracle, hoje a prefeitura de são paulo valida um arquivo txt de notas fiscais de serviço mas existem algumas cidades que exigem o envio através de webservice alguém tem algo como exemplo ? obrigado
-
- Rank: Analista Sênior
- Mensagens: 153
- Registrado em: Ter, 27 Mai 2008 1:31 pm
- Localização: Rio de Janeiro - RJ
Alex Silva
Analista de Sistemas
11i.10 Applications Developer Implementation Champion
11i.10 E-Business Suite Integration Champion
Analista de Sistemas
11i.10 Applications Developer Implementation Champion
11i.10 E-Business Suite Integration Champion
Você quer consumir um webservice com pl/sql?
Se for isso procura por DBMS_WS que vai te atender.
Se for isso procura por DBMS_WS que vai te atender.
-
- Moderador
- Mensagens: 1396
- Registrado em: Sex, 01 Fev 2008 2:06 pm
- Localização: Rio de Janeiro - RJ
- Contato:

você tem q montar o seu xml que vai enviar para o seu webservice dinamicamente de forma que suas notas vao ser nodes no teu xml.. essa é a parte dificil.. consumir o serviço vai ser bem mais facil como você pode ver aqui em cima
-
- Rank: Estagiário Sênior
- Mensagens: 9
- Registrado em: Sex, 27 Ago 2010 12:16 pm
- Localização: são paulo - sp
obrigado pelo retorno !!!
montar o xml para mim não seria a parte pior, eu não entendo é como fazer a comunicação e envio do xml através do oracle vocês teriam algum exemplo simples do funcionamento ? um exemplo pegando o arquivo xml e enviando para o webservice da prefeitura ? vocês chegaram fazer isso com alguma prefeitura ?
montar o xml para mim não seria a parte pior, eu não entendo é como fazer a comunicação e envio do xml através do oracle vocês teriam algum exemplo simples do funcionamento ? um exemplo pegando o arquivo xml e enviando para o webservice da prefeitura ? vocês chegaram fazer isso com alguma prefeitura ?
-
- Rank: Analista Sênior
- Mensagens: 153
- Registrado em: Ter, 27 Mai 2008 1:31 pm
- Localização: Rio de Janeiro - RJ
Alex Silva
Analista de Sistemas
11i.10 Applications Developer Implementation Champion
11i.10 E-Business Suite Integration Champion
Analista de Sistemas
11i.10 Applications Developer Implementation Champion
11i.10 E-Business Suite Integration Champion
Não, não cheguei a fazer com prefeitura.
O que cheguei a fazer foi uma implementação onde eu gerava o xml e gravava em um diretório.
Depois eu ficava monitorando alguns diretórios para pegar os arquivos e gravar no banco.
E já fiz um código pl/sql para consumir WS. Em relação a prefeitura, seria o endpoint que mudaria e o retorno que você tem que tratar.
O que cheguei a fazer foi uma implementação onde eu gerava o xml e gravava em um diretório.
Depois eu ficava monitorando alguns diretórios para pegar os arquivos e gravar no banco.
E já fiz um código pl/sql para consumir WS. Em relação a prefeitura, seria o endpoint que mudaria e o retorno que você tem que tratar.
-
- Rank: Estagiário Sênior
- Mensagens: 9
- Registrado em: Sex, 27 Ago 2010 12:16 pm
- Localização: são paulo - sp
Alex
meus conhecimentos em relação a Webservice no oracle é zero você não tem algo pronto para me passar ? pois fica mais facil em cima do seu fazer as alterações que preciso !!!!
obrigado.
meus conhecimentos em relação a Webservice no oracle é zero você não tem algo pronto para me passar ? pois fica mais facil em cima do seu fazer as alterações que preciso !!!!
obrigado.
-
- Rank: Estagiário Júnior
- Mensagens: 1
- Registrado em: Sex, 01 Abr 2011 1:28 am
- Localização: linhares - es
Apesar do tempo, verifiquei que ninguém disponibilizou um client oracle. Tenho este que fiz a uns 5 anos atras e funcionou todos estes anos sem problema. Naturalmente os dados so serviço foram trocados para exemplos. Este WS está pronto para HTTPS.
PROCEDURE SP_CONSOMEWS( lido in out varchar2, acpf in varchar2)
is
req UtL_HTTP.REQ;
resp UTL_HTTP.RESP;
l_url varchar2(255) default 'https://ws.serve.com.br/webservices/servico.asmx';
l_acao varchar2(255) default 'http://tempuri.org/autoriza';
l_wallet_path varchar2(100);
envelope VARCHAR2(32767);
doc xmltype;
docfilho xmltype;
doccampo varchar2(256);
docvalor varchar2(32767);
begin
lido := null;
l_wallet_path := 'file:/opt/oracle/db/chave';
UTL_HTTP.set_wallet(l_wallet_path,'senhadowaller');
envelope := '<?xml version="1.0" encoding="utf-8"?>'||
'<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'||
'<soap:Body>'||
'<autoriza xmlns="http://tempuri.org/">'||
'<usuario>joao</usuario>'||
'<senha>noisnafaixa</senha>'||
'<cpf_cnpj>'||acpf||'</cpf_cnpj>'||
'</autoriza>'||
'</soap:Body>'||
'</soap:Envelope>';
req := utl_http.begin_request(l_url, 'POST','HTTP/1.0');
utl_http.set_header(req, 'Content-Type', 'text/xml');
utl_http.set_header(req, 'Content-Length', length(trim( envelope )));
utl_http.set_header(req, 'SOAPAction', l_acao);
utl_http.write_text(req, envelope);
resp := utl_http.get_response(req);
utl_http.read_text(resp, envelope);
utl_http.end_response(resp);
doc := xmltype.createxml(envelope);
doc := doc.extract('/soap:Envelope/soap:Body/child::node()', 'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"');
docfilho := doc.extract('/autorizaResponse', 'xmlns="http://tempuri.org/');
if (docfilho is not null) then
doccampo := docfilho.extract('/autorizaResponse/AutorizaEmprestimoResult/child::text()',
'xmlns="http://tempuri.org/').getstringval();
end if;
lido := doccampo;
exception
when utl_http.end_of_body then
utl_http.end_response( resp );
end SP_CONSOMEWS;
-
- Rank: Estagiário Sênior
- Mensagens: 9
- Registrado em: Sex, 27 Ago 2010 12:16 pm
- Localização: são paulo - sp
olá natanclara,
você conseguiu assinar seu xml com plsql
tem como mandar um exemplo ?
pois já pesquisei muito e não achei nada a respeito das tag´s
<digestvalue>
<SignatureValue>
<X509Certificate>
no plsql ....
obrigado
você conseguiu assinar seu xml com plsql
tem como mandar um exemplo ?
pois já pesquisei muito e não achei nada a respeito das tag´s
<digestvalue>
<SignatureValue>
<X509Certificate>
no plsql ....
obrigado
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Bing [Bot] e 1 visitante