officeba > 单独文章


引用Amazon 图书信息1——Word2007高级应用(十七)

引经据典

写文章的时候,我喜欢引经据典,只要有需要,我就会引用曾经看过的图书。然而,和上一回提到的问题类似,每当我要引用一本图书时,我得首先打开浏览器上网搜索一下这本书,接着把这本书的一些基本信息,例如书名和作者,复制到文章里,然后插入这本书的超链接。有没有办法让这个过程变得更加简单呢?如果我没记错的话,Amazon.com提供了搜索图书服务,那么为什么不考虑把它集成进来呢?

引入一个解决方案的同时会把与之相随的问题也引入来,要成功把Amazon.com的搜索图书服务集成到Word2007里,我们就得回答下面这些问题:

访问Amazon.com的搜索图书服务有哪些条件/要求?
如何向这个服务发送请求?又如何解析服务返回的数据?哪些数据能用到这里来?
有用的数据如何组织和显示?
 

寻找经典

Amazon Web Service提供了两种接口,一种是基于SOAP的,另一种是基于REST的,我将选用后者来完成本回的插件。本回面临的第一个难点就是构建满足需求的REST请求,要做到这点,就得先清楚需求是什么:

我希望按书名的部分或者全部进行搜索;
我希望搜索的结果里面包括图书的书名、图书的作者、图书的封面和图书的超链接。

Amazon.com提供了Amazon E-Commerce Service Developer Guide,根据这份文档,我构建了如下所示的REST请求:

 

图 1 - REST Request

它告诉Amazon Web Service:

我要请求的服务是AWSECommerceService,通过它我可以访问Amazon的产品数据库;
我的访问密钥是什么,它可以通过在Amazon.com上注册帐号获得;
我要请求的操作是ItemSearch,通过它我可以搜索Amazon的产品数据库;
我要搜索书名包含"VSTO"字眼的图书。
在浏览器里执行这个请求将的到如下所示的搜索结果:

 

图 2 - REST Response

搜索结果所包含的信息量可以通过ResponseGroup参数来控制,ItemSearch操作使用Small作为该参数的默认值。通过把该参数的值该为Medium可以使返回的搜索结果包含图书的封面:

 

图 3 - REST Response with Image URLs

有了上面这些准备知识,我就可以着手实现搜索图书这部分功能了。首先,构建REST请求,并通过XElement.Load方法执行之:

 

Code 1 - Execute REST Request

需要注意的是,由于REST请求是一个URL,而书名可以包含URL不允许的字符,于是在把书名加到REST请求之前要先对其进行编码。

接着,用LINQ to XML对搜索结果进行处理:

 

Code 2 - Process REST Response

其中用到的辅助处理方法有:

 

Code 3 - REST Response Process Helpers

在命令行程序里使用BookSearch.Search方法搜索书名包含"VSTO"字眼的图书:

 

Code 4 - Test BookSearch.Search Method

却抛出了NullReferenceException:

 

图 4 - Oops! NullReferenceException is Raised

原来,搜索结果里面有一本书没有图片。由于并非每本书都有图片的,所以图片数据的辅助处理方法应先检查对应的XML元素是否存在,存在则进一步解析并返回图片的地址,否则返回null:

 

Code 5 - New Version of GetImageUrl Method

再次运行Code 4,可以看到正确的结果了:

 

图 5 - Process Results

 


声明:欢迎各大网站转载本站文章,还请保留一条能直接指向本站的超级链接,谢谢!

时间:2008-02-13 12:42:45,点击:65824


【OfficeBa论坛】:阅读本文时遇到了什么问题,可以到论坛进行交流!Excel专家邮件:342327115@qq.com(大家在Excel使用中遇到什么问题,可以咨询此邮箱)。

【声明】:以上文章或资料除注明为Office自创或编辑整理外,均为各方收集或网友推荐所得。其中摘录的内容以共享、研究为目的,不存在任何商业考虑。如有任何异议,请与本站联系,本站确认后将立即撤下。谢谢您的支持与理解!


相关评论

我要评论

评论内容