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 || '&param2=' ||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
Posted by 란수
,