我被要求编写PL / SQL代码以获取有向页面的URL。
一个网址可能会自动重定向到其他网址。
例如,链接http://www.arabseed.com
可能会重定向到http://www.arabseed.com/ar/home.html
。
所以我的PL / SQL块应该接受第一个URL并返回第二个URL。我在Oracle API中看过@ htp pkg并没有帮助我很多。
答案 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;
然而,我很确定这不是你所要求的。你必须改进你的问题。
也许这是你所有经理的错,因为实际上网络服务器会处理默认的重定向。