我正在创建一个将从网页下载图像的plsql程序。 如果我通过TOAD运行以下代码,我的HTTP状态为200(OK)。问题是当这个代码作为存储过程运行时,它返回的状态为403(Forbidden)。
DECLARE
req UTL_HTTP.REQ;
resp UTL_HTTP.RESP;
name VARCHAR2(256);
value VARCHAR2(1024);
BEGIN
UTL_HTTP.SET_PROXY('example');
req := UTL_HTTP.BEGIN_REQUEST('example');
UTL_HTTP.SET_HEADER(req, 'User-Agent', 'Mozilla/4.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 phrase: ' || 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.END_RESPONSE(resp);
END;
在TOAD(应用程序登录)和存储过程(应用程序登录)中使用UTL_HTTP有什么区别?
答案 0 :(得分:0)
作为存储过程,代码正在从DB服务器执行,因此代理也需要在DB服务器上设置。当通过TOAD运行时,正在使用APPS服务器上的代理设置。