我被要求编写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,它对我没有多大帮助。
我被要求编写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,它对我没有多大帮助。
从你给我们的信息,我只能想出这样的:
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服务器会处理默认的重定向。
很明显他想从http服务器 –
获取重定向,谢谢你的回答。 –
但我想使它动态。意味着接受任何网址,并返回指导人员 –
我很确定你的老板并不意味着其他人为你做你的工作。
如果你看看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;
非常感谢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 –
这个错误是因为你运行你的数据库的机器无法解析DNS地址(只是配置问题) –
你想找到在您自己的网站或网络中的任何地方重定向? –