方法文档:Oracle 应用服务器 10g (10.1.3) 中的 HTTPClient

最初发布时间:2005 年 10 月 10 日
最后更新时间:2006 年 1 月 16 日
作者:Frances Zhao

简介

Oracle 应用服务器和 OC4J 10g (10.1.3) 将 HTTPClient Java 程序包作为一个完整的 HTTP 客户端库提供。它当前实现了 HTTP/1.0 和 HTTP/1.1 协议的大部分相关内容,包括请求方法 HEAD、GET、POST 和 PUT,以及授权、重定向请求和 Cookie 的自动处理。此外,所包括的 Codecs 类还包含 base64、quoted-printable、URL 编码、chunked 和多部分/形式数据编码的编码器和解码器。

本方法文档演示了包含不同 JSP(如 GET 方法和 Cookie)的 HTTPClient 程序包的几个基本特性。

前提条件

知识准备

  • 应熟悉以下技术:HTTP、JSP;
  • 指向 OTN 上其他 OC4J 方法文档的链接

软件要求

本演示要求安装并正确配置以下软件组件:

  • Oracle Containers for J2EE 10g (10.1.3) 单机版,并配置有一个 Web 站点(如 http-web-site)
  • Sun JDK 1.5.0 或更高版本(可以从 此处获得)
  • Apache Ant 1.6.2 或更高版本,用于构建应用程序,可以从 此处获得
  • 任何 HTML 浏览器,如 Mozilla、Microsoft Internet Explorer、Netscape 等

符号

  • %ORACLE_HOME% — 安装 OC4J 的目录。
  • %JAVA_HOME% - 安装 JDK 的目录
  • %HOWTO_HOME% - 将此演示解压缩到的目录

构建应用程序

一般信息

使用 HTTPClient 十分简单,通常涉及以下步骤:

  • 首先,将导入语句 import HTTPClient.*; 添加到文件中。
  • 接下来,创建 HTTPConnection 的实例(您希望与其对话的每个服务器都需要一个)。
  • 然后,可以使用 Head()、Get()、Post() 等中的一种方法在 HTTPConnection 中发送请求。这些方法都会返回 HTTPResponse 的实例。
  • 使用 HTTPResponse 的方法访问响应头(getHeader()、getHeaderAsInt() 等)、各种响应信息(getStatusCode()、getReasonLine() 等)、响应数据(getData()、getText() 和 getInputStream())以及可能已经发送的任何尾部(getTrailer()、getTrailerAsInt() 等)。

 

在应用程序的类路径中包含 HTTPClient

您必须在应用程序的类路径中包括 %ORACLE_HOME%/j2ee/home/lib/http_client.jar,才能使用 HTTPClient 程序包。本方法文档使用的 JSP 在部署后利用 HTTPClient,因而有必要将上述 jar 添加到该应用程序的 orion-application.xml 中(使用 <library> 元素)。

以下是附加的类路径声明,位于 %HOWTO_HOME%/etc 下的 orion-application.xml 中。

<orion-application>
  <library path="../../lib/http_client.jar"/>
</orion-application>

JSP httpclient_basic.jsp

该 JSP 演示了 HTTPClient 的基本特性。它使用 HTTP GET 方法首先检索现有的 HTML 页面并显示该页面,然后检索不存在的 HTML 页面以正确地报告错误。该 JSP 位于 %HOWTO_HOME%/src/web/content/httpclient_basic.jsp 下。

下面是该 JSP 代码中的关键操作:

  • 利用指定的主机和端口信息构造一个 HTTPConnection 对象。对于本方法文档,主机为 127.0.0.1,端口为独立 OC4J 的默认值 8888。如果您使用的是 OracleAS 环境,将端口修改为 http 服务器端口(参见 ant-oracle.properties 以获得示例)。
  • 通过在该 HTTPConnection 上调用 Get() 方法获得 HTTPResponse 对象,这可以有效地使用 GET 方法发送 HTTP 请求。
  • 从 HTTPResponse 对象,使用 getStatusCode() 检查响应状态代码。
  • 使用 HTTPResponse.getText() 检索实际的 HTML 页面内容。

 

JSP httpclient_cookie.jsp

该 JSP 演示了 HTTPClient Cookie 处理功能(在 HTTPClient.CookieModule 中提供),如 Cookie 创建、存储、检索和策略处理程序设置。该 JSP 位于 %HOWTO_HOME%/src/web/content/httpclient_cookie.jsp 下。

下面是该 JSP 代码中的某些关键操作:

  • 构造一个 Cookie HTTPClient.Cookie 并将它传送给 HTTPClient。
  • 禁用默认的 Cookie 策略处理程序,以便接受所有 Cookie。该操作通过 HTTPClient.setCookiePolicyHandler(null) 完成。
  • 发送 HTTP 请求以调用另一个 JSP httpclient_svr.jsp,这将存储一个新 Cookie。
  • 通过调用 HTTPClient.CookieModule.listAllCookies() 来检查所有存储的 Cookie。这应该显示单独 JSP 存储的新 Cookie。

 

JSP httpclient_svr.jsp

该 JSP 由 httpclient_cookie.jsp 调用。它使用 HTTP 响应存储一个新 Cookie,以供调用的 JSP 检查。为此,它使用标准的 javax.servlet.* API,并且不使用 HTTPClient 程序包。该 JSP 还输出到 OC4J 控制台,在响应发送回之前,Cookie 在 HTTPClient 中设置。

更多 HTTPClient 示例

有关 HTTPClient 的基本特性和高级特性的更多示例,请查看以下链接:

 

运行应用程序

以下说明适用于在 Oracle Containers for J2EE 10g (10.1.3) 的独立实例上运行本演示。

检查方法文档分发

  • build - 构建过程中创建的临时目录
  • log - 保存构建/部署日志的临时目录
  • etc — 封装此应用程序的所有必要文件
  • lib — 保存可以部署的应用程序存档(如 ear、war、rar 或 jar 文件)
  • doc — 方法文档和 Javadoc
    • how-to-httpclient.html — 此方法文档页面
  • src — 演示程序的源代码
    • web — 包含 HTML 页面和 JSP 代码

设置应用程序

环境配置

请检查以确保 ant-oracle.properties 文件(位于该示例分发的根目录下)中的以下属性配置正确(注意:其中某些属性将是下述环境变量的默认值。如果您在环境中设置这些变量,可能不必改变文件中的值)。如果必要,则针对您的环境将这些变量修改为适当的值:

  • oracle.home — oracle 安装的根目录。默认值为 ORACLE_HOME 环境变量。
  • java.home — JDK 安装的根目录。默认值为 JAVA_HOME 环境变量。
  • oracleas.host — 运行 OC4J 实例的平台的主机名。默认值为 localhost。
  • oracleas.http.port — OC4J HTTP 监听程序进行监听时所使用的端口。默认值为 8888
  • oracleas.admin.port  — OC4J 管理处理器进行监听时所使用的端口。默认值为 23791
  • oracleas.admin.user — OC4J 管理员的名称。默认值为“ oc4jadmin”。
  • oracleas.admin.password — OC4J 管理员的口令。默认值为“ welcome”。
  • oracleas.binding.module — 已部署应用程序绑定到的 HTTP Web 站点的名称。默认值为“ default-web-site”。
%ORACLE_HOME%/ant/bin

为被管理的 OracleAS 实例配置环境

g
  • oracleas.http.port — Oracle HTTP Server (OHS) 监听时所使用的端口。
  • oracleas.admin.port — OPMN 请求端口(在 opmn.xml 中指定),其默认值为 6003。您还可以使用以下命令检查 OPMN 请求端口: %ORACLE_HOME%/opmn/bin/opmnctl status -port
  • oracleas.admin.user — OC4J 管理员的名称。默认值为“ oc4jadmin”。
  • oracleas.deployer.uri — 用于执行不同管理操作的 URI(部署,取消部署)。该文件包含不同的 URI,这取决于应用程序的拓扑:独立的 OC4J、被管理的单个节点或被管理的集群。您只需取消与您的拓扑匹配的 URI 的注释即可。
  • oracleas.oc4j.instance — 这是被管理的 OC4J 实例,其中将部署或取消部署应用程序。

启动 OC4J 实例

g
  • 独立安装: %ORACLE_HOME%/bin/oc4j start
    注意,该 oc4j 命令期望 JAVA_HOME 环境变量指向一个完整的 JDK 安装。

  • 受 OracleAS 管理的安装: %ORACLE_HOME%/opmn/bin/opmnctl startall

生成、编译和部署应用程序

构建脚本安装

确保在您的计算机上安装并正确配置了 Ant 1.6.2 或更高版本。在某些操作系统上,Ant 当前不支持使用环境变量。如果您使用的正好是这种操作系统,则要修改位于顶层 %HOWTO_HOME% 目录中的 common.xml 文件。

构建应用程序

在顶层 %HOWTO_HOME% 目录中,键入命令:

  • ant

%HOWTO_HOME%/dist 目录中现在应包含新创建的 httpclient_demo.ear

如果构建成功,此命令还将尝试部署此应用程序。它将首先测试 OC4J 是否正在运行。

部署应用程序

还可以使用以下命令分别部署应用程序。确保定义了 %ORACLE_HOME% 环境变量。在顶层 %HOWTO_HOME% 目录中,键入命令:

  • ant deploy

运行应用程序

在浏览器窗口中,浏览到:

如果网站的主机名或端口号不同,则用实际值替换。

将显示两个按钮。单击第一个按钮将调用 JSP 测试 HTTPClient 的基本特性;单击第二个按钮将调用 JSP 测试 HTTPClient 中提供的 Cookie 功能。将出现一个新页面显示测试日志,或者发生异常。新页面上应该有一个返回链接,可以将您转回到此页面。

总结

学习完本文档后,您应可以:

  • 学会如何使用 Oracle 应用服务器和 OC4J 10g (10.1.3) 提供的 HTTPClient

 

Left Curve
热门下载
Right Curve