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

时间:2011-12-10 09:55:39

标签: oracle plsql

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

一个网址可能会自动重定向到其他网址。

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

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

2 个答案:

答案 0 :(得分:4)

我很确定你的老板不会让别人为你做你的工作 如果您查看UTL_HTTP documentation,您会找到为您完成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;

答案 1 :(得分:-1)

从你给我们的信息中我只能想出这个:

function get_redirected_url (url varchar2) return varchar2 is
begin
  case url
    when 'http://www.arabseed.com' then return 'http://www.arabseed.com/ar/home.html';
    when /* other URLs go here */
    else return '';
  end;
end;

然而,我很确定这不是你所要求的。你必须改进你的问题。

也许这是你所有经理的错,因为实际上网络服务器会处理默认的重定向。