Amazon MWS 上传数据 (三) 提交请求
前面介绍了设置服务和构造请求,现在介绍提交请求。
上传数据,查询上传操作的工作状态,和处理上传操作返回的报告操作使用的Amazon API 分别为:SubmitFeed(),FeedSubmissionListRequest(),GetFeedSubmissionResult().
- SubmitFeed()-- 提交请求,代码示例:
1 #region AmazonSubmitFeed 2 /// <summary> 3 /// 提交请求 4 /// </summary> 5 public void AmazonSubmitFeed(string fileName, string feedType) 6 { 7 MarketplaceWebServiceClient service = GetService(); 8 SubmitFeedRequest request = GetSubmitFeedRequest(fileName, feedType); 9 try 10 { 11 SubmitFeedResponse response = service.SubmitFeed(request); 12 } 13 catch (MarketplaceWebServiceException ex) 14 { 15 #region Log Error 16 17 #endregion 18 } 19 } 20 #endregion
大家可以看到上面先调用设置服务的方法,随后通过GetSubmitFeedRequest(fileName, feedType);构造请求,最后是提交请求,返回的response中有我们需要的feedSubmmissionId,我们需要将其保存下来。
- GetFeedSubmissionList()--查询上传操作的工作状态,代码示例:
1 #region FeedSubmissionList
2 /// <summary> 3 /// 提交请求 4 /// </summary> 5 public void FeedSubmissionList(string feedSubmmissionId) 6 { 7 MarketplaceWebServiceClient service = GetService(); 8 GetFeedSubmissionListRequest request = FeedSubmissionListRequest(feedSubmmissionId); 9 10 try 11 { 12 GetFeedSubmissionListResponse response = service.GetFeedSubmissionList(request); 13 } 14 catch (MarketplaceWebServiceException ex) 15 { 16 #region Log Error 17 18 #endregion 19 } 20 } 21 #endregion
上面的示例中我们通过调用GetFeedSubmissionList接口得到处理结果,处理结果有很多种,经常遇到的有_SUBMITTED_,_IN_PROGRESS_,_DONE_
其中_SUBMITTED_表示已收到请求,但尚未开始处理。
_IN_PROGRESS_表示请求正在处理。
_DONE_表示请求已处理。
注意:当结果FeedProcessingStatus==_DONE_时,并不代表我们上传操作被Amazon 服务器接受了,仅仅代表此次操作已经完成,不代表此次操作成功。
FeedProcessingStatus 枚举可以在官网查到 http://docs.developer.amazonservices.com/zh_CN/feeds/Feeds_FeedProcessingStatus.html#Feeds_FeedProcessingStatus
- GetFeedSubmissionResult()--得到处理报告,示例代码:
1 #region FeedSubmissionResult 2 /// <summary> 3 /// 提交请求 4 /// </summary> 5 public void FeedSubmissionResult(string feedSubmmissionId) 6 { 7 MarketplaceWebServiceClient service = GetService(); 8 GetFeedSubmissionResultRequest request = FeedSubmissionResultRequest(feedSubmmissionId); 9 10 try 11 { 12 GetFeedSubmissionResultResponse response = service.GetFeedSubmissionResult(request); 13 } 14 catch (MarketplaceWebServiceException ex) 15 { 16 #region Log Error 17 18 #endregion 19 } 20 } 21 #endregion
上面的代码中,调用GetFeedSubmissionResult接口,将处理报告以xml(上一节构造请求的时候,已经设置)的形式保存在本地。
处理报告会有比较仔细的提示,告诉我们出错的什么地方,只要按此修改即可。