UTL_HTTP在toad中工作,而不是作为包

时间:2013-08-14 17:49:39

标签: oracle http plsql

我正在创建一个将从网页下载图像的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有什么区别?

1 个答案:

答案 0 :(得分:0)

作为存储过程,代码正在从DB服务器执行,因此代理也需要在DB服务器上设置。当通过TOAD运行时,正在使用APPS服务器上的代理设置。