在 Flex 微型博客应用程序中使用 pureXML,第 3 部分: 使用 pureXML Web 服务将微型博客条目发布到 HTML 页面

将 pureXML 服务器的最近更新作为 RSS 提要发布到 Twitter

IBM DB2® 的 pureXML® 功能允许您不需任何修改将原生 XML 储存在数据库中,并且 Adobe Flex 应用程序能够直接读取 XML 和填充 Flex 用户界面。在这个共分为 3 部分的系列文章中,您将利用 pureXML、Web 服务和 Adobe® Flex® 创建一个微型博客应用程序;它甚至允许您在 Twitter 上发布自己的微型博客更新。在本系列的第一篇文章中,您了解了 Web Services,以及如何在创建和测试微型博客数据库时使用 DB2 pureXML 支持它们。第二篇文章介绍了如何使用 Adobe Flex 和 ActionScript 创建应用程序的界面。本文是该系列的最后一篇文章,您将学习如何使用 pureXML Web Services 将微型博客条目发布到 HTML 页面。

Joe Lennon, 软件开发人员, Freelance

Joe Lennon 是一位来自爱尔兰科克市的软件开发人员,他今年 23 岁。Joe 目前为 Core International 工作,是 Web 应用程序和 Oracle PL/SQL 开发人员。他 2007 年毕业于 University College Cork,并获得商业信息系统专业的学位。他现在和他的女朋友 Jill 生活在科克市。


developerWorks 投稿作者

2009 年 12 月 21 日

先决条件

在本文中,您将使用 PHP 为 Profile Badge Generator、RSS Publisher 和 Twitter 发布应用程序创建脚本。您将使用开放源码的 Apache Web 服务器和 DB2 Express-C 数据库服务器作为开发环境的一部分。要获取下载这些软件的信息,请查看本文末尾的 参考资料部分


简介

常用缩略词

  • API:应用编程接口
  • HTML:超文本标记语言
  • HTTP:超文本传输协议
  • RSS:真正简单的联合
  • SDK:软件开发工具箱
  • SQL:结构化查询语言
  • URL:统一资源定位符
  • XML:可扩展标记语言

在这个关于创建与 IBM DB2 pureXML 数据库交互的应用程序的系列文章的最后部分,您将使用流行的 PHP 语言创建脚本,以通过 Web 在数据库中发布和聚合状态更新。

首先,您需要允许用户用 HTML 创建 Profile Badge,用于生成一段可以粘贴到用户的博客或 Web 站点的 HTML 代码。这将从 pureXML 数据库获取最新的状态更新并以预定义的格式呈现它们。用户可以通过选择大小和颜色模式来定制标栏(badge)的设计,以及定义可以显示的更新数量。接下来,创建一个 PHP 脚本来将数据库中的最新状态更新作为 RSS 提要发布。最后,创建一个脚本来将数据库中的所有状态更新显示给用户,其中每个更新旁边都有一个 Post to Twitter 按钮。当用户按下该按钮时,Twitter API 将获取指定的发布内容,并将更新添加到该用户的 Twitter 流。

在开始编写代码之前,您需要先建立开发环境。首先要做的是安装 Web 服务器 —— 在本文中为开放源码的 Apache Web 服务器。然后安装 PHP 并根据 Apache 和 DB2 配置它。现在请下载并安装 Apache。

安装 Apache

打开您的 Web 浏览器并访问 Apache HTTP Server 下载页面(在 参考资料 部分提供相关的链接)。向下滚动并找到标记有 best available version 的版本,然后找到 Win32 Binary without Crypto 下载。在撰写本文时,最新的可用版本为 2.2.14。

将文件保存到一个方便的位置(比如 Windows® 桌面),下载完成之后启动 .msi 文件开始设置实用程序。

单击 Next,阅读 License Agreement 并选择 I accept the terms in the license agreement 选项,然后单击 Next。在下一个界面中,将出现一个 Read This First 文档。单击 Next 继续。

在 Server Information 界面上,您输入的值不是很重要的,因为这是一个开发环境。您将使用本地主机地址访问 Apache 安装,因此可以输入任意的域和电子邮件地址。在 Install Apache HTTP Server 2.2 programs and shortcuts for 选项下面,确保选择 All Users, on Port 80, as a Service 选项(推荐的选项)。在这个界面中,我选择的选项如 图 1 所示。完成之后,单击 Next

图 1. Apache Server Information
Apache Server Information 对话框,包含 network domain、server name 和 administrator e-mail 字段

现在将提示您选择一个安装类型:Typical 或 Custom。除非您想要改变 Apache Server 将要安装的组件,否则在这里选择 Typical 就可以。按 Next 继续。

在 Destination Folder 界面上,使用默认选项 C:\Program Files\Apache Software Foundation\Apache2.2\

现在可以开始安装过程了。在 Ready to Install the Program 界面,单击 Install 开始安装。

安装仅需几分钟。完成之后,将看到类似于 图 2 的屏幕。按 Finish 关闭安装程序。

图 2. 安装完成
Apache 服务器的 Installation completed 对话框

如果安装成功,Apache 现在应该在您的系统中运行。成功安装的标志是可以在系统托盘上看到一个显示 Apache 徽标的小图标,该图标还带有一个播放按钮,如 图 3 所示。

图 3. Apache 系统托盘图标
Apache 系统托盘图标

要进一步确保 Apache 可以正常工作,打开 Web 浏览器并在地址栏上输入 URL http://localhost/index.html。如果 Apache 安装成功,您应该看到消息 “It works!”,如 图 4 所示。

图 4. It works!
Apache 服务器安装成功之后显示的'It works!' 消息

安装了 Apache 服务器并确定它可以使用之后,接下来安装 PHP。

安装 PHP

您需要下载 PHP 的最新 Windows 二进制文件(在 参考资料 部分提供相关的链接)。这里有许多选择,但您需要的是 PHP 版本 5.2.x(5.2.11 是撰写本文时最新的)的 VC6 x86 Thread Safe 版本(见 图 5)。不要 使用 PHP 5.3,因为它还不支持 PHP Extension Community Library (PECL) 扩展。选择 VC6 x86 Thread Safe 下面的 Zip 文件(不要下载 Installer 或 Debug Pack)。

图 5. PHP Windows 二进制文件下载页面
PHP Windows 二进制文件下载页面

将该文件保存到一个方便的位置。下载完成之后,将 Zip 文件的内容解压缩到文件夹 C:\php。该文件夹的内容将包含多个 lib 和 dll 文件,以及 PEAR 和其他文件夹;它应该如 图 6 所示。

图 6. C:\php 文件夹的内容
C:\php 文件夹的内容

您需要更改系统路径,并将 PHP 安装文件夹添加到该位置。在 Windows Control Panel 中打开 System。从这里单击 Advanced 选项卡(见 图 7)。

图 7. System properties
System Properties 对话框上的 Advanced 选项卡

单击 Environment Variables 打开另一台对话框。在 System variables 下找到 Path 变量,选择它并单击 Edit(见 图 8)。

图 8. Environment variables
Environment variables 对话框上的 System variables 窗口

在 Edit System Variable 对话框上,将值 ;c:\php 附加到 Variable value 字段,如 图 9 所示。

图 9. Edit system variable
添加了 ;c:\php 值之后的 Edit system variable 对话框

在 3 个打开的窗口中按 OK 关闭它们。在 C:\php 文件夹,您可以找到一个名为 php.ini-recommended 的文件。复制这个文件并粘贴到同一个文件夹中,但将其重命名为 php.ini。您需要下载 PHP 的 DB2 扩展(在 参考资料 部分提供相关的链接)。您将下载 PHP 的 PECL 扩展归档文件。解压缩该文件。打开将文件解压缩到的文件夹并找到文件 php_ibm_db2.dll。复制该文件并将其粘贴到文件夹 C:\php\ext。有了可用的 DB2 扩展之后,您必须配置 PHP 以使用扩展。

使用您喜欢的文本编辑器编辑文件 C:\php\php.ini,然后找到行 extension_dir = "./"。将该行更改为:extension_dir = "c:\php\ext"。找到这个文件的动态扩展部分,最后一个应该为:;extension=php_zip.dll。在这行下面添加支持 DB2 扩展的行:extension=php_ibm_db2.dll。在扩展部分,找到 ;extension=php_curl.dll 并在行的开始处删除注释分号,使该行变为:extension=php_curl.dll

现在已经配置好 PHP,保存该文件。接下来应该配置 Apache 安装,告诉它如何找到 PHP。打开 Apache 配置文件,其位置是 C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf。使用您最喜欢的文本编辑打开该文件,然后将 清单 1 中的行添加到该文件的底部。

清单 1. 配置 Apache 以使用 PHP - httpd.conf 文件
LoadModule php5_module "c:/php/php5apache2_2.dll"
AddType application/x-httpd-php .php
PHPIniDir "C:/php"

保存 httpd.conf 文件并关闭文本编辑器。现在,在系统托盘上左键单击 Apache 图标并选择 Apache2.2>Restart。Web 服务器将停止并重启。如果一切顺利,您的 Web 服务器将运行已正确配置的 PHP 和 DB2 扩展。

为了确定 PHP 和 DB2 扩展是否工作,我们进行一个快速测试。再次打开文本编辑器,并创建一个包含以下内容的新文件:<?php phpinfo(); ?>

以 test.php 为名称将这个文件保存到文件夹 C:\Program Files\Apache Software Foundation\Apache2.2\htdocs 中。现在,打开 Web 浏览器并访问 http://localhost/test.php。您将看到一个包含关于您的 PHP 应用程序的信息的页面,该页面类似于 图 10

图 10. PHP 信息页面
PHP 信息页面

这个页面仅能确定 PHP 扩展是正常工作的,但 DB2 扩展呢?如果您向下滚动到页面的中部,您应该看到一个标题为 ibm_db2 的部分,如 图 11 所示。这表明已经成功加载 DB2 扩展。

图 11. ibm_db2 扩展信息
ibm_db2 扩展信息

为 PHP 安装了 PHP 和 DB2 扩展之后,现在可以在 DB2 数据库中使用 PHP 了。在下一个小节中,您将通过连接到 DB2 数据库来测试所有部分是否正常工作,并使用 PHP 获取一些数据。


使用 PHP 连接到 DB2 数据库

现在我们测试到 DB2 数据库的连接。打开文本编辑器并创建一个新的文件,将 清单 2 中的内容添加到该文件中。以 test_db.php 为名称将该文件保存到文件夹 C:\Program Files\Apache Software Foundation\Apache2.2\htdocs 中。您需要将 $db$user$pass 变量更改为在本系列第一部分中对 DB2 使用的值。$user 是表所在的 Schema。

清单 2. test_db.php
<?php
$db = 'MBLOG';
$user = 'MBLOG';
$pass = 'password';
$host = 'localhost';
$port = 50000;

$settings = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$db; " .
    "HOSTNAME=$host;PORT=$port;PROTOCOL=TCPIP;UID=$user;PWD=$pass; ";

$conn = db2_connect($settings, '', '');

if(!$conn) {
    echo "Connection failed<br />";
    echo db2_conn_errormsg($conn);
}

$sql = "SELECT * FROM status_updates";
$result = db2_exec($conn, $sql);
echo "<ul>";
while($row = db2_fetch_array($result)) {
    echo "<li>$row[0]</li>";
}
echo "</ul>";
?>

在浏览器中打开该脚本,访问 http://localhost/test_db.php。您应该看到一个日期-时间和消息相连的列表,类似于 图 12

图 12. 使用 PHP 从 DB2 获取数据
使用 PHP 从 DB2 获取日期-时间和消息数据

您应该能够认出这些数据;它们是来自您在本系列的第一部分中创建的 DB2 数据库的数据。现在已经有了正常运行的 PHP 并且可以通过它从数据库获取数据,您可以进入下一步,使用 PHP 将一些优秀的特性结合起来。在下一个小节中,您将创建一个 PHP 脚本,它允许您生成 Profile Badge,使用它可以将 HTML 代码粘贴到 Web 站点或博客中,从而将微型博客更新添加到该页面。


创建 HTML 标栏

在前一个小节中,您成功安装和配置了 PHP,并且可以通过它从 DB2 数据库获取数据。在 图 12 中,您可能已经注意到,尽管数据作为 XML 储存在数据库中,当您使用 SELECT 语句从数据库获取数据时,它不是返回 XML,而是返回一个带有相连的 date_created 和 text 标记值的字符串。当然,您将需要单独获取这些字段,以整齐地格式化 HTML 标栏。

首先需要创建一个 DB2 视图,它将使用 SQL/XML 将 pureXML 数据库中的数据分割成 PHP 可以轻松解析的分开的列。如果您喜欢,还可以使用 XQuery 完成该任务。

打开 DB2 Command Editor 应用程序 (Start>Programs>IBM DB2>DB2COPY1 (Default)>Command Line Tools>Command Editor)。确保选择 MBLOG 数据库作为目标,然后将 清单 3 中的代码输入到编辑器区域中。

清单 3. 创建更新视图
CREATE VIEW updates(date_created, text) AS
SELECT t.date_created, t.text FROM status_updates su,
XMLTABLE('$u/update' passing su.data as "u"
columns date_created varchar(100) path 'date_created',
text varchar(500) path 'text') as t;

现在,在编辑器的左侧按绿色按钮 Play 运行该语句。您应该在响应区域收到一条成功消息。在进入下一步之前,检查视图是否正常工作。在编辑器区域,使用以下内容代替原来的语句:select date_created, text from updates;

您应该看到类似于 图 13 的结果。

图 13. 执行 Updates 视图的结果
执行 Updates 视图的结果是分开了日期-时间和消息数据

以上的 SELECT 语句从位于名为 date_created 和 text 的独立列中的 status_updates 表获取数据。您可以使用 PHP 中类似的 SELECT 语句来更加轻松地处理 DB2 数据。

现在开始 Profile Badge Generator。您需要创建的第一个 PHP 脚本就是为 Badge Generator 准备的表单。这个表单将询问用户希望自己的标栏使用什么颜色(白、黄或灰)和大小(宽或窄)。当用户单击 Generate 按钮时,将显示标栏的外观,并呈现可用于将标栏粘贴到博客或 Web 站点的 HTML 代码。

您首先需要创建的文件是 generate.php,需要将其保存在 C:\Program Files\Apache Software Foundation\Apache2.2\htdocs 文件夹中。清单 4 包含该脚本的内容。

清单 4. generate.php
<html>
<head>
<?php
if(isset($_GET['size']) && isset($_GET['color'])) {
    if($_GET['size'] == "wide") $size = 'width="400" height="150"';
    else $size = 'width="200" height="300"';
    ?>
    <title>Your Profile Badge is Ready!</title></head>
    <body><h1>Your Profile Badge is Ready!</h1>
    <iframe src="badge.php" frameborder="1" scrolling="auto" <?php echo 
$size; ?>
        marginheight="0" marginwidth="0"
        style="background-color: <?php echo $_GET['color']; ?>;">
        Older browser see this message as iframes aren't supported.
    </iframe><br /><br />
    Paste the following code into your blog or Website HTML code in order to add
    the Profile Badge to that page:<br />
    <textarea readonly="readonly" cols="40" rows="5">
<iframe src="http://localhost/badge.php" frameborder="1" scrolling="auto"
<?php echo $size; ?>
    marginheight="0" marginwidth="0"
    style="background-color: <?php echo $_GET['color']; ?>;">
    Older browser see this message as iframes aren't supported.
    </iframe>
    </textarea>
    <?php
} else {
    ?>
    <title>Generate Profile Badge</title></head>
    <body><h1>Generate Profile Badge</h1>
    <form method="get" action="generate.php">
    <strong>Color:</strong><br />
    <input type="radio" name="color" value="white" /> White
    <input type="radio" name="color" value="yellow" /> Yellow
<input type="radio" name="color" value="silver" /> Grey
    <br /><br /><strong>Size:</strong><br />
    <input type="radio" name="size" value="wide" /> Wide
    <input type="radio" name="size" value="narrow" /> Narrow
    <br /><br /><input type="submit" value="Generate!" />
    </form>
    <?php
}
</body></html>
?>

如果表单还没有提交,该脚本会将其呈现给用户,要求他们为 Profile Badge 选择大小和颜色。如果表单已经提交,将显示 Profile Badge IFRAME 和一些 HTML 代码,这些代码可以包含底部的其他页面中的 IFRAME。不过,在试用这些代码之前,您需要构建实际的标栏。将 清单 5 中的代码添加到一个命名为 badge.php 的新文件中,并将其保存到 generate.php 所在的目录中。

清单 5. badge.php
<?php
$db = 'MBLOG';
$user = 'MBLOG';
$pass = 'password';
$host = 'localhost';
$port = 50000;

$settings = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$db; " . 
    "HOSTNAME=$host;PORT=$port;PROTOCOL=TCPIP;UID=$user;PWD=$pass; ";

$conn = db2_connect($settings, '', '');

if(!$conn) {
    echo "Connection failed<br />";
    echo db2_conn_errormsg($conn);
}

?>
<style type="text/css">
.update { border-bottom: 1px solid black; padding: 5px; }
</style>

<?php
$sql = "SELECT text, date_created FROM updates order by date_created desc";
$result = db2_exec($conn, $sql);
if(!$result) echo db2_stmt_errormsg();
else {
echo '<div class="updates">';
while($row = db2_fetch_array($result)) {
        if(strlen($row[0]) > 0 && strlen($row[1]) > 0) {
echo '<div class="update">'
                .'<div class="update_text">'.$row[0].'</div>'
                .'<div class="update_date"><em>'.$row[1].'
</em></div>'
                .'</div>';
        }
}
echo "</div>";
}
?>

这个脚本连接到 DB2 数据库并从您在本小节开始时创建的 DB2 视图获取状态更新。它检查 textdate_created 字段包含的数据,然后显示这些数据。这个脚本还可以调用其他页面的 IFRAME 标记,以在这些页面中显示它,从而可以轻松地将其放入到博客或 Web 站点中。

打开 Web 浏览器并访问 http://localhost/generate.php。您应该看到一个类似于 图 14 的页面。

图 14. Generate profile badge 页面
Generate Profile Badge 页面,包含 color 和 size 单选按钮

选择颜色和大小并按 Generate! 按钮。您应该看到类似于 图 15 的页面,具体取决于您的选择。

图 15. Profile badge 的结果页面
Profile badge 的结果页面,包含日期-时间戳和消息,以及 iframe 中的代码

当然,您可以在样式和功能上对这个 Profile Badge 进行大量改进。您可以添加公司的徽标和到生成器页面的链接、格式化将要显示的日期和过滤要显示的更新的数量,等等。


发布 RSS 提要

在这个小节中,您将使用 PHP 为微型博客应用程序生成一个 RSS 提要。在您的文本编辑器中创建一个新的文件,以 rss.php 名称将其保存到 C:\Program Files\Apache Software Foundation\Apache2.2\htdocs 文件夹中。清单 6 显示了这个文件的内容。

清单 6. rss.php
<?php
header("Content-type: text/rss+xml");
header("Pragma: no-cache");

echo '<?xml version="1.0" encoding="utf-8"?>';
echo '<rss version="2.0">';
echo '<channel>';
echo '  <title>Microblog RSS Feed</title>';
echo '  <description>An RSS Feed of Microblog Status'. 
'Updates</description>';
echo '  <link>http://localhost/rss.php</link>';
echo '  <language>en-us</language>';
echo '  <generator>DB2 Microblog</generator>';

$database = 'MBLOG';
$user = 'JOE LENNON';
$password = 'password';
$hostname = 'localhost';
$port = 50000;

$settings = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;" .
    "HOSTNAME=$hostname;PORT=$port;PROTOCOL=TCPIP;" .
    "UID=$user;PWD=$password;";

$conn = db2_connect($settings, '', '');

$sql = "select text, date_created from updates order by date_created desc";
$result = db2_exec($conn, $sql);

while($row = db2_fetch_array($result)) {
    if(strlen($row[0]) > 0 && strlen($row[1]) > 0) {
        $pub_date = $row[1];
        $pub_date = str_replace('T', '-', $pub_date);
        $pub_date = str_replace(':', '-', $pub_date);
        $date_array = explode("-", $pub_date);
        $timestamp = mktime($date_array[3], $date_array[4], 
$date_array[5], $date_array[1], $date_array[2],
$date_array[0]);
        $rss_date = date(DATE_RSS, $timestamp);

        echo '<item>';
        echo '  <title>'.htmlentities($row[0]).'</title>';
        echo '  <description>'.htmlentities($row[0]).'</description>';
        echo '  <pubDate>'.$rss_date.'</pubDate>';
        echo '  <link>http://localhost/generator.php</link>';
        echo '</item>';
    }
}

echo '</channel>';
echo '</rss>';
?>

这个脚本使用从 DB2 数据库获取的数据生成一个标准 RSS 2.0 格式的 XML 文档。要查看该提要,打开兼容 RSS 的 Web 浏览器或 RSS Feed Reader 应用程序,然后访问 URL http://localhost/rss.php。您应该看到类似于 图 16 的视图。

图 16. RSS 提要的实际效果
一个微型博客的 RSS 提要,包含一个链接列表

您的 RSS Feed 生成器现在将每个条目链接到 Profile Badge 生成器页面。当然,如果您的 Web 站点的每个更新都有自己的页面,那么可以在提要中提供一个到该页面的链接。它仍然在每次运行时从数据库获取数据。更好的办法是使用在预定义时间间隔调用 PHP 脚本的 cron 作业或调度任务,PHP 脚本在被调用之后生成 RSS 提要并保存到名为 rss.xml 的文件中。然后,您可以将读取器/订阅器指向 rss.xml 文件,而不是动态的 rss.php 脚本。


与 Twitter 集成

您将创建最后一个脚本,它允许您使用 Twitter API 将我们的数据库中的博客条目发布到 Twitter 上。在这个脚本中,首先将包含数据库中的所有更新的列表呈现给用户,然后在每个更新旁边添加一个链接 Push to Twitter。当您单击该链接时,Twitter API 将把该条目添加为新的 Twitter 更新。

首先,在文本编辑器中创建一个新文件,以 twitter.php 为名称将其保存到 C:\Program Files\Apache Software Foundation\Apache2.2\htdocs 文件夹中。清单 7 显示了该文件的内容。

清单 7. twitter.php
<?php
if(isset($_GET['text'])) {
    $ch = curl_init("http://www.twitter.com/statuses/update.xml?status=".
urlencode(stripslashes(urldecode($_GET['text']))));
    curl_setopt($ch, CURLOPT_VERBOSE, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));
    curl_setopt($ch, CURLOPT_USERPWD, "joelennon:password");
    curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
    curl_setopt($ch, CURLOPT_POST, 1);
    $result = curl_exec($ch);
    $res_info = curl_getinfo($ch);
    curl_close($ch);

    if($res_info['http_code'] == '200') {
        echo '<h1>Yippee! Your update was posted to Twitter!</h1>';
    } else {
        echo '<h1>Whoops! Something seemed to go wrong when posting '.
'to Twitter...</h1>';
    }
} else {
    $database = 'MBLOG';
    $user = 'JOE LENNON';
    $password = 'password';
    $hostname = 'localhost';
    $port = 50000;

    $settings = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;" .
        "HOSTNAME=$hostname;PORT=$port;PROTOCOL=TCPIP;" .
        "UID=$user;PWD=$password;";

    $conn = db2_connect($settings, '', '');
    $sql = "select text, date_created from updates order by ".
"date_created";
    $result = db2_exec($conn, $sql);

    echo '<h1>Push to Twitter</h1>';
    echo '<ul>';
    while($row = db2_fetch_array($result)) {
        if(strlen($row[0]) > 0 && strlen($row[1]) > 0) {
            echo '<li><strong>'.htmlentities($row[0]).'</strong>'.
' (<a href="twitter.php?text='.htmlentities($row[0]).'">Push to '.
'Twitter</a>)<br /><em>Posted '.$row[1].'</em></li>';
        }
    }
    echo '</ul>';
}
?>

在该脚本中,当用户第一次打开页面时,将看到一个状态更新列表,并且每个更新都带有一个 Push to Twitter 链接。当用户单击链接时,该脚本将使用 PHP 的 curl 扩展(在本文前面配置 PHP 时已启用)通过 Twitter API 将更新发布到 Twitter。确保将 CURL_USERPWD 的值更改为您自己的 Twitter 帐户。在 Web 浏览器上访问 http://localhost/twitter.php 将看到如 图 17 所示的页面。

图 17. 将更新发布到 Twitter
Push Updates to Twitter 页面

当您单击其中一个 Push to Twitter 链接之后,您的更新将发布到 Twitter。如果脚本收到一条成功地响应消息,您将看到 图 18 所示的消息。

图 18. 更新后的 Twitter 状态
更新后的 Twitter 状态

您接下来需要做的就是在 Twitter 页面上查看您新发布的内容。我访问我的页面 http://twitter.com/joelennon 可以看到我的更新列表,如 图 19 所示。

图 19. Twitter 上的更新
在作者的 Twitter 页面上的更新

这个脚本还有许多需要改进的地方。对于新手而言,还无法判断更新是否已经发布到 Twitter 上。您可以让用户知道更新已经发布,或者根本不显示更新。另一个优秀的特性可能是扩展您在本系列的第二篇文章中构建的应用程序,为用户提供一个可以同时将更新发布到 Twitter 和微型博客应用程序的选项。


结束语

在这个利用 IBM DB2 pureXML、Web 服务和 Adobe Flex 创建微型博客应用程序的系列的最后一部分中,您深入学习了如何利用微型博客数据生成一些有用的脚本。首先,您安装了 Apache Web 服务器和 PHP,以及用于支持 IBM DB2 的 PHP 扩展。其次,用 PHP 创建了一个 Profile Badge 生成器,它生成可以立即插入到博客或 Web 页面中的 HTML 代码。接着使用 RSS 将微型博客更新聚合起来。最后,将您的微型博客应用程序和 Twitter 集成起来,让用户可以使用 curl 和 Twitter API 将微型博客状态更新发布到 Twitter。

在这个系列中讨论了许多技术:IBM DB2 Express-C、DB2 pureXML、SQL/XML、XQuery、pureXML Web Services、IBM Data Studio、IBM WebSphere Application Server Community Edition、Adobe Flex、Apache、PHP、RSS 提要和 Twitter API。您已经有足够的经验来使用这些技术构建更加高级的应用程序。


下载

描述名字大小
本文源代码xmlflexpt3.source.zip5KB

参考资料

学习

获得产品和技术

  • Apache HTTP Server 下载页面:获取 Apache HTTP (Web) 服务器的源代码实现。最新的可用版本为 2.2.13。
  • Windows binaries for PHP Point:获得用于 PHP Point 的最新 Windows 二进制文件。本文使用 PHP 5.2.11。不要使用 PHP 5.3,因为它还不支持 PECL 扩展。
  • DB2 extension for PHP:下载这个扩展,并设置它来创建示例应用程序。
  • 访问 Twitter API wiki,它包含文档、OAuth FAQ 和例子、邮件列表、讨论组和其他资源。
  • 现在可以免费使用 DB2 。下载 DB2 Express-C,这是为社区提供的 DB2 Express Edition 的免费版本,它提供了与 DB2 Express Edition 相同的核心数据特性,为构建和部署应用程序奠定了坚实的基础。
  • IBM 产品评估试用版软件:下载或 IBM SOA Sandbox for Reuse,并开始使用来自 DB2®、Lotus®、Rational®、Tivoli® 和 WebSphere® 的应用程序开发工具和中间件产品。

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=XML, Information Management, Open source, Web development
ArticleID=457801
ArticleTitle=在 Flex 微型博客应用程序中使用 pureXML,第 3 部分: 使用 pureXML Web 服务将微型博客条目发布到 HTML 页面
publish-date=12212009