1

我正在创建一个 plsql 程序,该程序将从网页下载图像。如果我通过 TOAD 运行以下代码,我将获得 200(OK)的 HTTP 状态。问题是当将此代码作为存储过程运行时,它返回的 HTTP 状态为 403(禁止访问)。

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 有什么区别?

4

1 回答 1

0

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

于 2014-10-14T23:32:25.640 回答