Amazon 上传数据的流程为:
- 通过 SubmitFeed 操作、加密标头和所有必需的元数据(包括 FeedType 的值在内),来提交 XML 或文本型数据文件。正如亚马逊 MWS的所有提交内容一样,您还必须包括验证信息。SubmitFeed 操作可返回 FeedSubmissionId 的值,您可以使用该值,通过 GetFeedSubmissionList 操作,对上传数据状态进行定期检查。
- 如果亚马逊 MWS仍在处理请求,则 GetFeedSubmissionList 操作的 FeedProcessingStatusList 参数可返回状态为 _IN_PROGRESS_。如果处理已完成,则所返回状态为 _DONE_。
- 上传数据处理完毕后,您可以通过 GetFeedSubmissionResult 操作,来接收处理报告,该处理报告会指明上传数据中的哪些记录已成功处理,而哪些记录已生成错误。请注意,您必须创建提交 GetFeedSubmissionResult 操作时亚马逊 MWS用来写入报告的流。将亚马逊 MWS上传数据 API 部分客户端库代码用于 GetFeedSubmissionResult 操作,以创建流。
- 对处理报告加以分析,更正文件或传送中的错误,然后通过 SubmitFeed 操作重新提交上传数据。不断重复此过程,直到处理报告中不再有错误。当处理报告无任何错误时,传送即完成。
上面这段话债至Amazon 官方介绍,详见 http://docs.developer.amazonservices.com/zh_CN/feeds/index.html
主要就是三个步骤,首先上传数据,其次查询上传操作的工作状态,最后处理上传操作返回的报告。
上面三个步骤需要的工作流程均为:设置服务--->构造请求--->提交请求,其中服务的设置是一样的,请求是各有不同。
现在首先说一下设置服务,在开始写程序之前,我们需要得到我们将要引用的类库MarketplaceWebService,这个类库可以在官方的Demo https://developer.amazonservices.com.cn/doc/bde/feeds/v20090901/cSharp.html 中得到。将这个类库引用到我们的程序中
设置服务的代码示例如下:
1 #region 设置服务信息 2 /// <summary> 3 /// 设置服务 4 /// </summary> 5 /// <returns>返回服务对象</returns> 6 private MarketplaceWebServiceClient GetService() 7 { 8 String accessKeyId = "***********"; 9 String secretAccessKey = "************"; 10 11 const string applicationName = "AllureCSharpScratchpad"; 12 const string applicationVersion = "1.0"; 13 14 MarketplaceWebServiceConfig config = new MarketplaceWebServiceConfig(); 15 config.ServiceURL = "https://mws.amazonservices.com"; 16 17 MarketplaceWebServiceClient service = new MarketplaceWebServiceClient(accessKeyId, secretAccessKey, applicationName, applicationVersion, config); 18 19 return service; 20 } 21 #endregion
其中accessKeyId和secretAccessKey由商家提供,这样 Amazon 的服务就设置好了。至于为什么要这么写呢,这是Amazon规定的。