Amazon的E-Commerce服务(1)

为了使对web服务的讨论更加有趣,我们先看一个实际的例子:Amazon的web服务,在http://www. amazon.com/gp/aws/landing.html有其描述。这个电子商务web服务使程序员可以按自己所需与Amazon系统进行交互。举例来说,你可以指定作者或书名,从而列出所有相关书籍,也可以填满购物车然后下订单。Amazon使这样的服务成为可能,于是那些想把东西卖给顾客的公司都可以使用它,将Amazon的系统作为实现的后台。要运行我们的例子,必须到Amazon注册,以取得一个免费的开发者令牌,有了它才可以连接该服务。

或者,你可以采用本节描述的技巧,应用于其他的web服务。http://www.xmethods.com网站列出了许多免费可用的web服务。

让我们更仔细地看看Amazon的E-Commerce服务的WSDL(位于http://webservices.amazon.com/AWSECommerceService/AWSECommerceService.wsdl),它描述了一个ItemSearch操作:

<operation name="ItemSearch">

<input message="tns:ItemSearchRequestMsg"/>

<output message="tns:ItemSearchResponseMsg"/>

</operation>...<message name="ItemSearchRequestMsg">

<part name="body" element="tns:ItemSearch"/>

</message>

<message name="ItemSearchResponseMsg">

<part name="body" element="tns:ItemSearchResponse"/>

</message>

下面是ItemSearch和ItemSearchResponse类型的定义:

<xs:element name="ItemSearch">

<xs:complexType>

<xs:sequence>

<xs:element name="MarketplaceDomain" type="xs:string" minOccurs="0"/>

<xs:element name="AWSAccessKeyId" type="xs:string" minOccurs="0"/>

<xs:element name="SubscriptionId" type="xs:string" minOccurs="0"/>

<xs:element name="AssociateTag" type="xs:string" minOccurs="0"/>

<xs:element name="XMLEscaping" type="xs:string" minOccurs="0"/>

<xs:element name="Validate" type="xs:string" minOccurs="0"/>

<xs:element name="Shared" type="tns:ItemSearchRequest" minOccurs="0"/>

<xs:element name="Request" type="tns:ItemSearchRequest" minOccurs="0"

maxOcurs="unbounded"/>

</xs:sequence>

</xs:complexType>

</xs:element>

<xs:element name="ItemSearchResponse">

<xs:complexType>

<xs:sequence>

<xs:element ref="tns:OperationRequest" minOccurs="0"/>

<xs:element ref="tns:Items" minOccurs="0" maxOccurs="unbounded"/>

</xs:sequence>

</xs:complexType>

</xs:element>

通过使用JAX-WS技术,ItenSearch操作就变成了一个方法调用:

void itemSearch(String marketPlaceDomain, String awsAccessKeyId,

String subscriptionId, String associateTag, String xmlEscaping, String validate,

ItemSearchRequest shared, List<ItemSearchRequest> request,

Holder<OperationRequest> opHolder, Holder<List<Items>> responseHolder)

ItemSearchRequest参数类型定义如下:

<xs:complexType name="ItemSearchRequest">

<xs:sequence>

<xs:element name="Actor" type="xs:string" minOccurs="0"/>

<xs:element name="Artist" type="xs:string" minOccurs="0"/>

. . .

<xs:element name="Author" type="xs:string" minOccurs="0"/>

. . .

<xs:element name="ResponseGroup" type="xs:string"

minOccurs="0" maxOccurs="unbounded"/>

. . .

<xs:element name="SearchIndex" type="xs:string" minOccurs="0"/>

. . .

</xs:complexType>

这个描述被转译成了一个类:

public class ItemSearchRequest

{

public ItemSearchRequest() { ... }

public String getActor() { ... }

public void setActor(String newValue) { ... }

public String getArtist() { ... }

public void setArtist(String newValue) { ... }

...

public String getAuthor() { ... }

public void setAuthor(String newValue) { ... }

...

public List<String> getResponseGroup() { ... }

...

public void setSearchIndex(String newValue) { ... }

...

}

要调用该查询服务,就要构造一个ItemSearchRequest对象,然后调用一个"port"对象的itemSearch方法。

ItemSearchRequest request = new ItemSearchRequest();

request.getResponseGroup().add("ItemAttributes");

request.setSearchIndex("Books");

Holder<List<Items>> responseHolder = new Holder<List<Items>>();

request.setAuthor(name);

port.itemSearch("", accessKey, "", "", "", "", request, null, null, responseHolder);

port类是自动生成的。port对象将Java对象翻译成SOAP消息,并将此消息传递给Amazon服务器,然后将返回的消息翻译为一个ItemSearchResponse对象,将响应置于"持有器"对象中。

注意

Amazon关于参数和返回值的文档写得异常简要。但是,你可以填充http://awszone.com/scratchpads/index.aws处的表格,以查看SOAP请求和响应。这有助于你去猜测需要提供什么样的参数值以及可以得到什么样的返回值。

时间: 2024-09-02 22:02:10

Amazon的E-Commerce服务(1)的相关文章

【硅谷连线】Amazon扩展第三方支付服务 iOS8支持分屏多任务显示

中云网每天连线硅谷,呈现最新鲜资讯!这里的"硅谷"指的是国外具有典型性和创新性企业代表. 1.PayPal CEO转投Facebook 主管移动通信业务 http://tech.163.com/14/0610/05/9UBS7V77000915BF.html 据国外媒体报道,PayPal CEO大卫?马库斯(David Marcus) 将于6月27日离开PayPal,投入Facebook麾下主管移动通信业务.据此前报道,Facebook斥资190亿美元购买WhatsApp,并已在尝试开

Amazon的当日送达服务Amazon Fresh已经发展了5年

我们都知道Amazon的当日送达服务Amazon Fresh已经发展了5年,覆盖了西雅图,旧金山,以及南加州这三个地区.不过Amazon并非当日送达的唯一玩家,Google Shopping今天宣布,将当日送达服务从旧金山拓展至纽约和洛杉矶,并承诺6个月内此服务免费. Google的当日送达服务叫Google Shopping Express,去年春季开始在旧金山,硅谷地区试营,现在向纽约和洛杉矶拓展,并承诺此服务在未来6个月内免费.从Google Shopping Express在旧金山的运营

Amazon的当日送达服务已经发展了5年

我们都知道Amazon的当日送达服务Amazon Fresh已经发展了5年,覆盖了西雅图,旧金山,以及南加州这三个地区.不过Amazon并非当日送达的唯一玩家,Google Shopping今天宣布,将当日送达服务从旧金山拓展至纽约和洛杉矶,并承诺6个月内此服务免费. Google的当日送达服务叫Google Shopping Express,去年春季开始在旧金山,硅谷地区试营,现在向纽约和洛杉矶拓展,并承诺此服务在未来6个月内免费.从Google Shopping Express在旧金山的运营

亚马逊今日推出一项名为Amazon Glacier的新服务

8月22日消息,据国外媒体报道,亚马逊今日推出一项名为Amazon Glacier的新服务,它的这项云存储产品可以帮助企业尤其是小型企业安全托管它们的备份和归档数据. 亚马逊表示,这项服务价格低廉,每月每GB存储空间的价格仅1美分.它说,企业用户可以利用这项服务来储存那些不经常被存取.但仍需保留下来已备日后参照的重要数据. 亚马逊称,Glacier服务最适合用来储存数字媒体归档.财务.病历记录.原始基因序列数据和长期数据库备份等数据. 与大多数企业级存储服务不同的是,Glacier服务没有预付费

Amazon扩展EC2计算服务增云存储实力

Amazon的互联网服务部门最终将"持续存储"添加到了它的EC2计算服务中,以便增强它在云存储战略上的努力. 在几个星期的传言之后,该厂商今天推出了Elastic Block Storage(EBS:弹性块存储)产品,它声称该产品将增强它以互联网服务形式同时提供存储和计算功能的能力. 该厂商在两年前推出的Elastic Compute Cloud(EC2:弹性计算云)能够以互联网服务的形式为用户提供计算功能,起步价是每1.7GB存储10美分.但是,过去,用户只能将存储分配给实际正在运行

Amazon为EC2容器服务提供自动缩放能力

Amazon将为自家的ECS服务提供自动缩放能力.借此Amazon ECS服务将能自动扩展或收缩.当阈值度量指标超过或低于预期值时,将由Amazon CloudWatch警报触发缩放事件. Amazon ECS又名EC2容器服务,是一种针对Amazon EC2集群上运行的Docker容器提供的管理服务.Amazon已可支持EC2集群的自动缩放,但原本并不支持对EC2集群中运行的容器服务进行自动缩放. 自动缩放事件由Amazon Cloud Watch度量指标驱动.Amazon Cloud Wat

Amazon如何利用云服务处理大规模多维数据集

智能电视设备能够了解需要录制哪些节目,浓缩咖啡机则能够在需要维修时自动报警,冰箱在牛奶即将耗尽前及时发出提醒--这一切都依托于数据分析的力量而实现.随着人们对于市场未来与消费者行为做出预测的愿望变得愈发迫切,以沃尔玛.Amazon.eBay以及Nordstrom等企业为代表的零售业巨擘已然将预测性分析视为一种必需.  根据EKN Research发布的一份最新报告,有80%的电子商务巨头表示他们已经开始紧随Amazon走上分析技术发展道路.Jeff Bezos和他的管理团队在过去十七年中一直努力

为跨渠道的商务构建WebSphere Commerce服务

本教程对如何开发 Web.移动和http://www.aliyun.com/zixun/aggregation/2595.html">第三方应用程序使用的服务提供了指南.本教程还介绍了 WebSphereCommerce 基于 SOA 的编程模型,以及如何构建您可以跨不同渠道进行重用的业务逻辑.本教程主要针对于实现 WebSphere Commerce 解决方案的架构师.顾问和开发人员. 目标 在本教程中,您将定制 Catalog 服务,以支持扩展的目录项信息和使用来自多个渠道的服务.该定

功能丰富的 Perl: Perl 和 Amazon 云,第 1 部分--通过构建简单的照片共享网站学习 Amazon S3 和 SimpleDB 服务的基础知识

在这个 5 部分系列文章的第 1 部分中,Ted Zlatanov 解释了 Amazon 的 Simple Storage Service (S3) 和 SimpleDB 产品在构建 Web 站点方面的优势和不足.这个系列通过实际示例形象地介绍了 S3 和 SimpleDB 架构以及如何使用它们:在本文中,将使用 Perl 库构建一个简单的照片共享网站. 您需要学习 Amazon 的两个 Web 服务:Amazon S3 (Simple Storage Service) 和 Amazon Sim

Amazon推云归档服务Glacier

Amazon是推广云计算的领导厂商.现在,这家公司将注意力转向长期云归档,推出新的Glacier服务. 如同该服务的名称所暗示的那样,Glacier不是用于快速的文件和备份检索.该公司在AWS(Amazon Web Services)网站上的简短的声明表示:"Amazon Glacier用于那些不经常访问但是仍然对未来参考很重要的数据,针对的是那些可以承受数小时的检索时间数据." 该公司说的数小时之长的检索时间不是开玩笑. 根据Amazon的说法,检索任务可以占用三个到五个小时,数据会