上一篇文章提到了Amazon 上传数据有三个步骤,但是每个步骤都需要构造服务和构造请求,服务是一样的,请求各不相同;这个很容易理解,这三个步骤都需要和Amazon服务器交互,所以他们的服务构造是一样的,但是三个步骤的功能各不相同,所以他们的请求(完成的功能)也不相同。

  • 现在先来说SubmitFeed的时候需要的请求文件,下面是请求文件的代码示例:
  #region 构造请求 Submit Amazon信息
private SubmitFeedRequest GetSubmitFeedRequest(string fileName, string feedType)//传入两个参数:1.文件名称 2.文件操作类别
{
SubmitFeedRequest request = new SubmitFeedRequest();
request.Merchant = merchantId;
request.MarketplaceIdList = new IdList();
request.MarketplaceIdList.Id = new List<string>(new string[] { marketplaceId }); request.FeedContent = File.Open(fileName, FileMode.Open, FileAccess.Read); request.ContentMD5 = MarketplaceWebServiceClient.CalculateContentMD5(request.FeedContent);
request.FeedContent.Position = ; request.FeedType = feedType; return request;
}
#endregion

fileName是我们需要上传的数据文件,feedType是这个文件的操作类别;feedType分为两大类,XML和Text,feedType据体值见 http://docs.developer.amazonservices.com/zh_CN/feeds/Feeds_FeedType.html

当上传的文件为Xml 格式时,常用的feedType为:

商品基本数据上传------_POST_PRODUCT_DATA_

定价数据上传-------_POST_PRODUCT_PRICING_DATA_

库存数据上传-------_POST_INVENTORY_AVAILABILITY_DATA_

商品图片上传-------_POST_PRODUCT_IMAGE_DATA_

商品关系上传-------_POST_PRODUCT_RELATIONSHIP_DATA_

运费数据上传------_POST_PRODUCT_OVERRIDES_DATA_

文件为Text 时,找到对应的feedType 即可。

上面的代码中用到了,merchantId和marketplaceId,这两个数据的值由商家提供。

上传完数据之后,我们会得到一个feedSubmmissionId,这个就是我们这次操作的标识。下面的操作会用到。

  • 上传数据结束之后我们需要知道上传操作执行的状态,这里就要使用接口FeedSubmissionListRequest(),构造请求FeedSubmissionListRequest信息,下面是代码示例:
  #region 构造请求FeedSubmissionListRequest信息
private GetFeedSubmissionListRequest FeedSubmissionListRequest(string feedSubmmissionId)
{ GetFeedSubmissionListRequest request = new GetFeedSubmissionListRequest();
request.Merchant = merchantId; request.FeedSubmissionIdList = new IdList();
request.FeedSubmissionIdList.Id = new List<string>(new string[] { feedSubmmissionId }); return request;
}
#endregion

其中feedSubmmissionId由上传数据得到。
注意这里需要的是merchantId和feedSubmmissionId的列表,示例中只提供了一个feedSubmmissionId,所以是查看一个操作的执行状态。当执行状态是_Done 时,就可以执行下一步操作了。

  • 得到Amazon处理报告,使用FeedSubmissionResultRequest()接口,示例代码如下:
  #region 构造请求FeedSubmissionResultRequest信息
private GetFeedSubmissionResultRequest FeedSubmissionResultRequest(string feedSubmmissionId)
{ GetFeedSubmissionResultRequest request = new GetFeedSubmissionResultRequest(); string path = feedSubmmissionId + ".xml";//保存结果至本地
8 FileStream stream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite); request.Merchant = merchantId;
request.FeedSubmissionId = feedSubmmissionId;
request.FeedSubmissionResult = stream; return request;
}
#endregion

这里我们也用到了feedSubmmissionId,因为他是Amazon给我们的标识,通过他才能找到我们的操作。
这里将处理结果报告直接存放到本地。我一直没想通,为什么返回的结果信息,是在构造请求的时候处理,为什么不是在得到结果后再设置保存路径等信息。这个疑问我可能没写清,

至此构造请求已经简述完毕。

Amazon MWS 上传数据 (二) 构造请求的更多相关文章

  1. Amazon MWS 上传数据 (一) 设置服务

    Amazon 上传数据的流程为: 通过 SubmitFeed 操作.加密标头和所有必需的元数据(包括 FeedType 的值在内),来提交 XML 或文本型数据文件.正如亚马逊 MWS的所有提交内容一 ...

  2. Amazon MWS 上传数据 (三) 提交请求

    前面介绍了设置服务和构造请求,现在介绍提交请求. 上传数据,查询上传操作的工作状态,和处理上传操作返回的报告操作使用的Amazon API 分别为:SubmitFeed(),FeedSubmissio ...

  3. Amzon MWS API开发之 上传数据

    亚马逊上传数据,现有能操作的功能有很多:库存数量.跟踪号.价格.商品....... 我们可以设置FeedType值,根据需要,再上传对应的xml文件即可. 下面可以看看FeedType类型 这次我们拿 ...

  4. 重新想象 Windows 8.1 Store Apps (89) - 通信的新特性: 下载数据, 上传数据, 上传文件

    [源码下载] 重新想象 Windows 8.1 Store Apps (89) - 通信的新特性: 下载数据, 上传数据, 上传文件 作者:webabcd 介绍重新想象 Windows 8.1 Sto ...

  5. TortoiseGit和msysGit安装及使用笔记(windows下使用上传数据到GitHub)[转]

    TortoiseGit和msysGit安装及使用笔记(windows下使用上传数据到GitHub) Git-1.7.11-preview+GitExtensions244SetupComplete+T ...

  6. ueditor富文本上传图片的时候报错"未找上传数据"

    最近因为需求所以在ssh项目中使用了Ueditor富文本插件,但是在上传图片的时候总是提示“未找到上传数据”,之后百度了好久终于弄明白了.因为Ueditor在上传图片的时候会访问controller. ...

  7. Streamr助你掌控自己的数据(1)——教你5分钟上传数据至Streamr

    博客说明 所有刊发内容均可转载但是需要注明出处. 教你5分钟上传数据至Streamr 本系列文档主要介绍怎么通过Streamr管理自己的DATA,整个系列包括三篇教程文档,分别是:教你5分钟上传数据至 ...

  8. ajax上传数据

    ---恢复内容开始--- ajax上传数据,(简洁版) 1.上传普通同表单标签内容. 1.获取表单的内容 1. var file=$('#file').val();(放在点击事件后面) 2. var ...

  9. ASIHTTPRequest框架使用总结系列之阿堂教程5(上传数据)

    在上篇文章中,阿堂和网友们分享了如何用ASIHTTPRequest框架下载数据的实例,本篇阿堂将数据介绍如何用ASIHTTPRequest框架上传数据的应用实例.       数据上传是通过ASIHT ...

随机推荐

  1. MySQL忘记了密码登录不进去,用命令符修改新的密码重新登录的方法

    MySQL忘记了密码登录不进去,用命令符修改新的密码重新登录的方法: 1.备份my.ini 2.在my.ini字段里 [mysqld] #socket=mysql skip-grant-tables ...

  2. celery 使用multiprocessing 问题记录

    报错: [2013-11-29 14:27:48,297: ERROR/MainProcess] Task app.add[e5d184c0-471f-4fc4-804c-f760178d4847] ...

  3. PHP QR Code封装二维码生成教程

    今天搞了一下二维码封装在tp框架上运用. 找了下草料网, api接口要收费, 现在找到了两种方法来实现用PHP来实现创建二维码. 由于二维码生成,会使用到PHP的GD库, 我们要先在PHP.ini文件 ...

  4. php array 排序 感悟

    array  排序总体有这几个函数sort.rsort.asort.arsort.ksort.krsort.usort.uasort.uksort. 一开始我记来记去总是有点混乱,后来认真对比后终于清 ...

  5. 【LeetCode练习题】Evaluate Reverse Polish Notation

    Evaluate Reverse Polish Notation Evaluate the value of an arithmetic expression in Reverse Polish No ...

  6. windows2003 64位注册码 序列号 激活码

    Windows 2003 R2 64bit Enterprise VOL Edition 企业版 MR78C-GF2CY-KC864-DTG74-VMT73 VPT7T-77D38-KWVW2-2G3 ...

  7. wait函数返回值总结,孤儿进程与僵尸进程[总结]

    http://blog.csdn.net/astrotycoon/article/details/41172389 wait函数返回值总结 http://www.cnblogs.com/Anker/p ...

  8. apache端口被占用

      1.80端口被占用,先去服务里将IIS关闭掉,然后重启apache,如果还是继续弹窗the requested operation has failed...需要去Internet信息服务里面停止 ...

  9. 连不上VSS 【转】

    今天打开项目,但是连不上VSS,报错如下: (一)现象: Could not find the Visual SourceSafe Internet Web Service connection in ...

  10. Map笔记总结

    Map :存储的是键值对,一对一对出现的,要保证键的唯一性. Map常见的三个子类.1.HashTable 底层是哈希表结构,不能存在null的情况.该集合是线程同步的.效率低此类实现一个哈希表,该哈 ...