Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

utl_http.set_transfer_timeout(300) not working

Sergei MartensAug 7 2011 — edited Jan 29 2018
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
This post has been answered by Billy Verreynne on Aug 8 2011
Jump to Answer

Comments

Locked Post
New comments cannot be posted to this locked post.

Post Details

Locked on Sep 5 2011
Added on Aug 7 2011
7 comments
30,264 views