2011-12-10 61 views
1

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

一个URL可能被自动重定向到其他URL。

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

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

+0

你想找到在您自己的网站或网络中的任何地方重定向? –

回答

-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; 

不过,我敢肯定这不是你一直在问什么。你必须改进你的问题。

也许这都是你的管理者的错,因为实际上web服务器会处理默认的重定向。

+0

很明显他想从http服务器 –

+0

获取重定向,谢谢你的回答。 –

+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; 
+0

非常感谢Daniel Haviv的帮助。真的有两个问题,第一个是错误消息说 - ORA-29273:HTTP请求失败ORA-06512:在“SYS.UTL_HTTP”,第1029行ORA-12545:连接失败,因为目标主机或对象不存在ORA- 06512:在第10行。第10行是req:= UTL_HTTP.BEGIN_REQUEST('http://www.oracle.com'); 。我使用的是oracle10g db –

+0

这个错误是因为你运行你的数据库的机器无法解析DNS地址(只是配置问题) –