UTL_HTTP 包提供了容易的方式通过HTTP协议获取网页内容,下面结合几个例子介绍一下:

----------------------------------------------------------------------------------------

1、小网页内容获取(<2000 bytes):

1.1 创建函数p,供输出获取到的网页数据使用:

create or replace procedure p(p_string in varchar2) is
l_string long default p_string;
begin
loop
exit when l_string is null;
dbms_output.put_line(substr(l_string, 1, 250));
l_string := substr(l_string, 251);
end loop;
end;

1.2 获取网页内容函数:

declare
l_page long;
l_url varchar2(35) default 'http://www.baidu.com/';
begin
l_page := utl_http.request( l_url ); p( l_page );
end;
/

2、超过2000 bytes内容获取:(使用request_pieces)

declare
l_page utl_http.html_pieces;
l_url varchar2(25) default 'www.baidu.com';
begin
l_page := utl_http.request_pieces( l_url,
50 ); for i in 1 .. l_page.count
loop
p( l_page(i) );
end loop;
end;
CREATE OR REPLACE FUNCTION readfromweb(url VARCHAR2) RETURN CLOB IS
--TYPE html_pieces IS TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER;
pcs UTL_HTTP.Html_Pieces;
retv CLOB;
BEGIN
pcs := UTL_HTTP.request_pieces(url, 50);
FOR i IN 1 .. pcs.COUNT LOOP
retv := retv || pcs(i);
END LOOP;
RETURN retv;
END;

--官方例子:

declare
x utl_http.html_pieces;
len pls_integer;
begin
x := utl_http.request_pieces('http://www.oracle.com/', 100);
dbms_output.put_line(x.count || ' pieces were retrieved.');
dbms_output.put_line('with total length ');
len := 0;
for i in 1..x.count loop
len := len + length(x(i));
end loop;
dbms_output.put_line(len);
end;

Here is the output:

  Statement processed.

  4 pieces were retrieved.

  with total length

  7687

3、ORA-24247问题解决,参考:

点击打开链接 http://blog.csdn.net/indexman/article/details/17048677

--------------------------------

Dylan presents.

使用UTL_HTTP包获取网页内容的更多相关文章

  1. 使用selenium和phantomJS浏览器获取网页内容的小演示

    # 使用selenium和phantomJS浏览器获取网页内容的小演示 # 导入包 from selenium import webdriver # 使用selenium库里的webdriver方法调 ...

  2. 【C#】获取网页内容及HTML解析器HtmlAgilityPack的使用

    最近经常需要下载一些东西,而这个下载地址又会经过层层跳转,每个页面上都有很多广告,烦不胜烦,所以做了一个一键获得最终下载地址的小工具.使用C#,来获取网页内容,然后通过HtmlAgilityPack获 ...

  3. C#获取网页内容的三种方式

    C#通常有三种方法获取网页内容,使用WebClient.WebBrowser或者HttpWebRequest/HttpWebResponse... 方法一:使用WebClient (引用自:http: ...

  4. 使用oracle utl_http包需要注意的事项

    总结下几次使用utl_http包遇到的几个问题 关于utl_http包功能还是很强大的 可以通过他来捕捉网站页面的内容 或者调用一个url的接口完成某项功能 Eg: declare   req  UT ...

  5. C#获取网页内容 (WebClient、WebBrowser和HttpWebRequest/HttpWebResponse)

    获取网页数据有很多种方式.在这里主要讲述通过WebClient.WebBrowser和HttpWebRequest/HttpWebResponse三种方式获取网页内容. 这里获取的是包括网页的所有信息 ...

  6. 定义一个方法get_page(url),url参数是需要获取网页内容的网址,返回网页的内容。提示(可以了解python的urllib模块)

    定义一个方法get_page(url),url参数是需要获取网页内容的网址,返回网页的内容.提示(可以了解python的urllib模块) import urllib.request def get_ ...

  7. 使用Jsoup获取网页内容超时设置

    使用Jsoup获取网页内容超时设置 最近使用Jsoup来抓取网页,并对网页进行解析,发现很好用.在抓取过程中遇到一个问题,有些页面总是报Timeout异常,开始想是不是被抓取网站对IP进行了限制,后来 ...

  8. 基于apache —HttpClient的小爬虫获取网页内容

    今天(17-03-31)忙了一下午研究webmagic,发现自己还太年轻,对于这样难度的框架(类库) 还是难以接受,还是从基础开始吧,因为相对基础的东西教程相多一些,于是乎我找了apache其下的 H ...

  9. C#获取网页内容的三种方式(转)

    搜索网络,发现C#通常有三种方法获取网页内容,使用WebClient.WebBrowser或者HttpWebRequest/HttpWebResponse... 方法一:使用WebClient (引用 ...

  10. [PHP学习教程 - 网络]002.获取网页内容(URL Content)

    引言:获取网页内容是我们实现网页操作的基本之基本,今天这一讲,我们和大家讲一下基本请求网页内容的几种方法. 我们似乎每天都要做这样一件事情,打开一个浏览器,输入网址,回车,一个空白的页面顿时有了东西, ...

随机推荐

  1. JMS微服务开发示例(四)把配置文件appsettings.json 部署在网关,共享给其他相同的微服务

    通常,多个相同的微服务器,它们的appsettings.json配置文件的内容都是一样的,如果,每次修改配置文件,都要逐个替换,那就太繁琐了,我们可以利用网关的文件共享功能,实现配置文件的统一更新. ...

  2. [转帖]JDK8使用G1 垃圾回收器能解决大问题吗?

    https://zhuanlan.zhihu.com/p/458098236 G1 垃圾回收器真的不行吗? 本文想突出两个问题: 解决问题的思路:从最原始的角度去思考,问题的本身是因为缓存数据导致的G ...

  3. SQLServer的varchar与nvarchar的学习之二

    SQLServer的varchar与nvarchar的学习之二 背景 昨天简单总结了多种数据库 varchar和nvarchar的区别与关系 今天想着能够分析一下数据库文件. 计划使用winhex 查 ...

  4. [转帖]Sql Server之旅——第六站 使用winHex利器加深理解数据页

    https://www.cnblogs.com/huangxincheng/p/4251770.html 这篇我来介绍一个winhex利器,这个工具网上有介绍,用途大着呢,可以用来玩数据修复,恢复删除 ...

  5. [转帖]OceanBase 存储引擎详解

    https://zhuanlan.zhihu.com/p/436485359 作者简介:沈炼,蚂蚁集团技术风险部数据库高级专家毕业于东南大学,2014年以来从事 OceanBase 在蚂蚁的架构工作, ...

  6. [转帖]Java 认证与授权(JAAS)介绍

    https://www.cnblogs.com/wuyongyin/p/16981469.html JAAS(Java Authentication Authorization Service),即 ...

  7. CentOS7最小安装注意事项

    CentOS7最小安装注意事项 背景与说明 公司很多项目现在都是最小化安装的了. 自己之前为了方便都是使用GUI安装,很多地方可能都有遗漏 这里进行一下简单的安装总结, 避免以后新安装有缺失的项目 安 ...

  8. docker hub arm64v8/postgres

    arm64v8/postgres https://hub.docker.com/r/arm64v8/postgres By arm64v8 • Updated 4 days ago The Postg ...

  9. void的讲解 、any的讲解 、联合类型的讲解

    1. void的使用 空值一般采用 void 来表示,同时void也可以表示变量 也可以表示函数没有返回值哈 使用了 void 就不能够使用 return 哈 let sum = function() ...

  10. SignalR系列文章01---MVC项目中创建demo

    1.  新建mvc项目,引入指定的nuget包 2.  新增加一个集成器类添加如下的代码 /// <summary> /// 供客户端调用的服务器端代码 /// </summary& ...