utl_http.set_transfer_timeout(300) not working
I have made a pl/sql procedure to call a webservice on the internet.
When i try to get a responce i get the error:
ORA-29273: HTTP request failed
ORA-06512: at "SYS.UTL_HTTP", line 1231
ORA-29276: transfer timeout
I tried to set the timeout to 5 minutes with "utl_http.set_transfer_timeout(300)". But after 60 seconds the exception is still raised. It looks like still the default is used?!
i am using Oracle Database 10g Express Edition Release 10.2.0.1.0 with EPG
My procedure:
=====================================================
create or replace procedure ipm40_send_bekendmaking(p_bdmg_id in number)
as
r_bekendmaking ipm40_bekendmakingen%rowtype;
r_gemeente ipm40_gemeenten%rowtype;
l_url httpuritype;
t_http_req utl_http.req;
t_http_resp utl_http.resp;
t_request_body clob;
t_respond clob;
-- t_teller integer := 1;
-- t_output varchar2(2000);
t_start number := 1;
t_body_lengte number;
t_chunkdata varchar2(2000);
t_tijd_1 varchar2(256);
t_tijd_2 varchar2(256);
t_timeout integer;
begin
select *
into r_bekendmaking
from ipm40_bekendmakingen
where id = p_bdmg_id;
select *
into r_gemeente
from ipm40_gemeenten
where gmte_code = r_bekendmaking.gmte_code;
l_url := httpuritype.createuri('http://zwolle.stadsbeheer.com:82/apex/ipm40bekendmaking?p_bdmg_id='||r_bekendmaking.id);
t_request_body := l_url.getClob();
t_http_req:= utl_http.begin_request( r_gemeente.url_webservice_bekendmakingen
, 'POST'
, 'HTTP/1.1');
utl_http.set_authentication(t_http_req,r_gemeente.user_webservice_bekendmakingen,r_gemeente.pw_webservice_bekendmakingen);
utl_http.set_header(t_http_req, 'Content-Type', 'text/xml charset=UTF-8');
utl_http.set_header(t_http_req, 'Content-Length', length(t_request_body));
utl_http.set_header(t_http_req, 'Transfer-Encoding', 'chunked' ); --
t_body_lengte := dbms_lob.getlength(t_request_body);
loop
t_chunkdata := dbms_lob.substr(t_request_body, 2000, t_start);
utl_http.write_text ( t_http_req, t_chunkdata );
t_start := t_start + 2000;
if t_start > t_body_lengte
then
exit;
end if;
end loop;
--utl_http.write_text(t_http_req, t_request_body);
utl_http.get_transfer_timeout(t_timeout);
utl_http.set_transfer_timeout(300);
utl_http.get_transfer_timeout(t_timeout);
t_tijd_1 := to_char(sysdate,'HH24:MI:SS');
t_http_resp:= utl_http.get_response(t_http_req);
utl_http.read_text(t_http_resp, t_respond);
/* loop
t_output := substr(t_respond,t_teller,1000);
exit when t_output is null;
dbms_output.put_line(t_output);
t_teller := t_teller + 1000;
end loop;
*/
-- utl_http.end_response(t_http_resp);
if instr(t_respond,'Successfully document processed') != 0
then
update ipm40_bekendmakingen
set ind_status = 'S'
, datum_verzonden = sysdate
, response = t_respond
where id = r_bekendmaking.id;
else
update ipm40_bekendmakingen
set ind_status = 'F'
, datum_verzonden = null
, response = t_respond
where id = r_bekendmaking.id ;
end if;
commit;
exception
when others
then
t_tijd_2 := to_char(sysdate,'HH24:MI:SS');
t_respond := substr(sqlerrm,1,2000);
update ipm40_bekendmakingen
set ind_status = 'F'
, datum_verzonden = null
, response = t_respond
where id = r_bekendmaking.id ;
commit;
end;
Edited by: Sergei Martens on 7-aug-2011 12:41
Edited by: Sergei Martens on 7-aug-2011 12:42