获取重定向 URL 的 PL/SQL 代码

Sha*_*usa 2 oracle plsql

我被要求编写 PL/SQL 代码来获取定向页面的 URL。

一个 URL 可能会自动重定向到另一 URL。

例如,链接http://www.arabseed.com可能会重定向到http://www.arabseed.com/ar/home.html.

所以我的 PL/SQL 块应该接受第一个 URL 并返回第二个 URL。我在 Oracle API 中查看了@htp pkg,它对我没有多大帮助。

Dan*_*viv 5

我很确定你的老板并不是想让其他人为你做你的工作。
如果您查看UTL_HTTP 文档您会发现一些示例可以为您完成 70% 的工作。

无论如何,这里是您要寻找的内容(对于一个重定向,我相信您能够将其修改为一系列重定向):

SET SERVEROUTPUT ON SIZE 40000

DECLARE
  req   UTL_HTTP.REQ;
  resp  UTL_HTTP.RESP;
  name  VARCHAR2(256);
  value VARCHAR2(1024);
BEGIN
  req := UTL_HTTP.BEGIN_REQUEST('http://www.arabseed.com');
  UTL_HTTP.SET_HEADER(req, 'User-Agent', 'Mozilla/4.0');
  UTL_HTTP.SET_FOLLOW_REDIRECT(req, 0);
  resp := UTL_HTTP.GET_RESPONSE(req);
  IF(resp.STATUS_CODE in (UTL_HTTP.HTTP_MOVED_PERMANENTLY,UTL_HTTP.HTTP_TEMPORARY_REDIRECT, UTL_HTTP.HTTP_FOUND))
  THEN
    FOR i IN 1..UTL_HTTP.GET_HEADER_COUNT(resp) LOOP
       UTL_HTTP.GET_HEADER(resp, i, name, value);
       if(name ='Location')
       THEN
             DBMS_OUTPUT.PUT_LINE('Redirecting to:' || value);
       END IF;
     END LOOP;
   END IF;  
  UTL_HTTP.END_RESPONSE(resp);
END;
Run Code Online (Sandbox Code Playgroud)