This is my SMS sending procedure where mobile number and body of msg is
passed.
Then concatenating all these values a URL is formed .
URL hit to apache server where .jsp page is made to send SMS via third
vendor.
This apache server is just a mediator between database and third vendor
Problem is that when the same URL is accessed through browser then page
runs but when same thing is accessed by the procedure then
*DBMS_OUTPUT.PUT_LINE*('HTTP response status CODE: ' || resp.status_code);
gives ‘505’ error and UTL_HTTP.READ_TEXT(resp,v_msg,null);
Gives end of body reached.
Ex of url :-
http://10.xxx.xx.xx:xxxx/examples/trysms.jsp?mobileNumber=99xxxxxxxx&message=HELLO
<http://10.192.11.99:8080/examples/trysms.jsp?mobileNumber=99xxxxxxxx&message=HELLO>
WORLD
CREATE OR REPLACE Procedure CHANNELG.SMS_headers_V1
(
mob in varchar2,
msgg in varchar2
)
AS
req UTL_HTTP.REQ;
resp UTL_HTTP.RESP;
name varchar2(256);
value varchar2(5000);
value1 varchar2(1024);
v_msg varchar2(32767);
output_table *DBMS_OUTPUT.CHARARR*;
num_lines number := 500;
URL varchar2(500):='http://10.xxx.xx.xx:xxxx
/examples/xxxx.jsp?mobileNumber='||mob||'&message='||msgg;
l_clob clob;
id number;
BEGIN
select nvl(max(ID),0)+1 into id from SMS_STATUS;
insert into SMS_STATUS(ID,MOBILE_NUMBER,SENT_STATUS) values(id,mob,'Y'
);
*DBMS_LOB.CREATETEMPORARY*(l_clob,false);
UTL_HTTP.SET_PROXY('http://10.xxx.xx.xx:xxxx);
req := UTL_HTTP.BEGIN_REQUEST(URL,'POST','HTTP/1.1');
*--UTL_HTTP.SET_HEADER(req,'Content-Type','text/html;charset=ISO-8859-1');*
UTL_HTTP.SET_HEADER(req,'User-Agent', 'Mozilla/4.76');
UTL_HTTP.SET_HEADER(req,'Content-Length','0');
resp:= UTL_HTTP.GET_RESPONSE(req);
*DBMS_OUTPUT.PUT_LINE*('HTTP response status CODE: ' || resp.status_code
);
*DBMS_OUTPUT.PUT_LINE*('HTTP RESPONSE reason Pharse: ' || resp.
reason_phrase);
for i in 1..UTL_HTTP.GET_HEADER_COUNT(resp)
LOOP
UTL_HTTP.GET_HEADER(resp,i,name,value);
*DBMS_OUTPUT.PUT_LINE*(name || ':' || value);
END LOOP;
UTL_HTTP.READ_TEXT(resp,v_msg,null);
*DBMS_OUTPUT.PUT_LINE*('v_msg-' || v_msg);
*DBMS_LOB.WRITEAPPEND*(l_clob,length(v_msg),v_msg);
*DBMS_OUTPUT.GET_LINES*(output_table,num_lines);
DELETE FROM CLOB_TEST;
insert into clob_test values(l_clob);
select regexp_substr(substr(data,108,35),'[^,]+',1,3) INTO value1 from
clob_test;
update SMS_STATUS set DELIVERY_STATUS= value1 where ID=id and mobile_number
= mob ;
*--DBMS_OUTPUT.PUT_LINE('LENGTH OF MSG ' || length(v_msg));*
*--value1 := UTL_HTTP.REQUEST(URL);*
*--DBMS_OUTPUT.PUT_LINE('value' || value1);*
UTL_HTTP.END_RESPONSE(resp);
END;
/