超文本传输协议(HTTP)协议是最常用的Internet协议之一。 使用HTTP,可以通过统一资源定位器(URL)访问Web服务和其他在线信息资源。
通过将新的HTTP函数用作系统资源,DB2 for i为数据库开发人员开辟了一条新途径,以使数据库开发人员可以使用SQL合并Web服务。
新的HTTP用户定义函数(UDF)和用户定义表函数(UDTF)用Java™编写,它们存在于SYSTOOLS模式中。 SYSTOOLS与DB2 for i提供的其他模式不同,因为它不是缺省系统路径的一部分。 SYSTOOLS包含一组DB2 for i提供的示例和工具。 SYSTOOLS中的工具和示例被认为可以立即使用,但不属于任何IBM产品。 因此,它们不受IBM服务和支持的约束。
本文概述了新的HTTP函数,并提供了一个示例,展示了如何使用这些函数来请求Web服务并将数据结果与内置XML支持集成在一起,该内置XML支持也是DB2 for i 7.1支持的一部分。 该示例说明如何设计一个SQL查询,该查询从DB2 for i博客返回以前发布的条目。
先决条件
为了对DB2 i 7.1使用HTTP功能,必须在系统上安装以下软件。
- DB2 PTF组SF99701级别23
- Java 1.6或更高版本(5761-JV1选项11、12、14或15)
HTTP功能概述
HTTP UDF和UDTF使用以下命名约定命名:
HTTP<method><data-type><verbose>
-
method
表示HTTP函数。 支持所有常见的HTTP方法,包括POST
,GET
,PUT
,DELETE
和HEAD
。 有关HTTP方法的更多信息,可以参考参考资料部分中的超文本传输协议链接。 -
data-type
可以是CLOB
或BLOB
,它表示返回的HTTP响应消息的数据类型,或者在某些情况下(例如PUT
和POST
)表示请求消息的类型。 - DB2 for i为每种方法和数据类型组合提供HTTP函数的详细版本和非详细版本。
- 具有“ verbose”后缀的函数是表函数。 该表函数返回以下两者:结果集中的响应HTTP标头和响应消息。 响应HTTP标头包括响应代码和标头字段。 响应代码指示请求是否成功。 标头字段包含有关响应的其他信息。
- 不带“ verbose”功能的函数是标量函数,仅返回响应消息。
例如, HTTPPUTBLOBVERBOSE
是一个表函数,它将使用PUT
方法发送和接收BLOB数据,而HTTPGETCLOB
是一个标量函数,它将使用GET
方法来检索作为CLOB的资源表示形式。
除了HTTP方法功能之外,还提供了一些辅助功能来执行URL编码和解码以及base64编码和解码。 URL规范 (RFC 1738)定义了一组特殊字符,需要将这些特殊字符替换为转义序列(例如,如果用于URL的查询字符串中)。 辅助功能URLENCODE
和URLDECODE
执行URL编码和解码。 Base64编码通常用于将二进制数据编码为Web上的文本数据。 提供了辅助函数BASE64ENCODE
和BASE64DECODE
,用于对base64数据进行编码和解码。
表1显示了本文中使用的HTTP函数的签名。
表1.使用的HTTP函数的签名
功能名称 | ||
---|---|---|
httpGetBlobVerbose |
输入参数 | 输入参数类型 |
URL |
VARCHAR(2048) |
|
HTTPHEADER |
CLOB(10K) |
|