1. GET 방식
SELECT UTL_HTTP.REQUEST('http://localhost:8080/test.jsp') FROM DUAL;
2. POST 방식
CREATE OR REPLACE PROCEDURE HTTP_TEST(
IN_PARAM1 IN VARCHAR2,
IN_PARAM2 IN VARCHAR2
) AS
V_REQ UTL_HTTP.REQ;
V_RESP UTL_HTTP.RESP;
V_TEXT VARCHAR2(4000) := '';
V_PARAM VARCHAR2(1000) := '';
V_LENGTH NUMBER := 0;
/******************************************************************************
REVISIONS:
Ver Date Author Description
--------- ---------- --------------- ------------------------------------
1.0 2014-06-30 Ransu 1. Created this procedure.
NOTES :
******************************************************************************/
BEGIN
DBMS_OUTPUT.ENABLE; --DBMS_OUTPUT.ENABLE(100000); buffer size 오류시 사이즈 지정
DBMS_OUTPUT.PUT_LINE (HTTP_TEST START!!');
V_PARAM := 'param1='||IN_PARAM1 || '¶m2=' ||IN_PARAM2; --post 방식, input parameter
V_LENGTH := LENGTH(V_PARAM);
V_REQ := UTL_HTTP.BEGIN_REQUEST('http://localhost:8080/test.do', 'POST', 'HTTP/1.1');
UTL_HTTP.SET_HEADER(r=>V_REQ,
name => 'Content-Type',
value => 'application/x-www-form-urlencoded');
UTL_HTTP.SET_HEADER(r=>V_REQ,
name => 'Content-Length',
value => V_LENGTH);
UTL_HTTP.WRITE_TEXT(r=>V_REQ,
data =>V_PARAM );
V_RESP := UTL_HTTP.GET_RESPONSE(V_REQ);
-- UTL_HTTP.READ_TEXT(V_RESP, V_TEXT); --한번에 읽어옴
--line별로 읽어옴
LOOP
UTL_HTTP.READ_LINE(V_RESP, V_TEXT, TRUE);
DBMS_OUTPUT.PUT_LINE (V_TEXT); -- 응답 파일 contents 읽어옴
END LOOP;
--UTL_HTTP.END_RESPONSE(V_RESP);
DBMS_OUTPUT.PUT_LINE ('======================================================');
--DBMS_OUTPUT.PUT_LINE (V_TEXT);
DBMS_OUTPUT.PUT_LINE ('======================================================');
EXCEPTION
WHEN UTL_HTTP.END_OF_BODY THEN
--http 끝이면 응답종료
https://community.oracle.com/thread/2226105?start=0&tstart=0
DBMS_OUTPUT.PUT_LINE ('=====================');
UTL_HTTP.END_RESPONSE(V_RESP);
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR (
-20100,
'IF_APPROVAL_PROC CALL ERROR'
|| CHR (10)
|| SQLERRM);
DBMS_OUTPUT.PUT_LINE('HTTP_TEST ERROR MSG : ' || SQLERRM);
END;
/
※ACL 목록에 해당 호출 주소를 할당해 주어야 한다.
아래 글 참조
또한, 너무 많은 HTTP 요청이 있다는 오류가 생길경우
참고 https://community.oracle.com/thread/2226105?start=0&tstart=0
'프로그래밍 > DB(Oracle)' 카테고리의 다른 글
TABLE에서 다른 TABLE에 데이터 복사 (0) | 2014.11.01 |
---|---|
오라클(Oracle) 계정 생성 및 권한(DBA) (0) | 2014.10.20 |
ACL 목록 생성 (0) | 2014.06.30 |
Miliseconds를 Date로 변경 (0) | 2014.05.16 |
PL/SQL DECLARE Example (0) | 2014.05.01 |