Amazon MWS 上传数据 (二) 构造请求

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

  • 现在先来说SubmitFeed的时候需要的请求文件,下面是请求文件的代码示例:


 1  #region 构造请求 Submit Amazon信息
2 private SubmitFeedRequest GetSubmitFeedRequest(string fileName, string feedType)//传入两个参数:1.文件名称 2.文件操作类别
3 {
4 SubmitFeedRequest request = new SubmitFeedRequest();
5 request.Merchant = merchantId;
6 request.MarketplaceIdList = new IdList();
7 request.MarketplaceIdList.Id = new List<string>(new string[] { marketplaceId });
8
9 request.FeedContent = File.Open(fileName, FileMode.Open, FileAccess.Read);
10
11 request.ContentMD5 = MarketplaceWebServiceClient.CalculateContentMD5(request.FeedContent);
12 request.FeedContent.Position = 0;
13
14 request.FeedType = feedType;
15
16 return request;
17 }
18 #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信息,下面是代码示例:


 1  #region 构造请求FeedSubmissionListRequest信息
2 private GetFeedSubmissionListRequest FeedSubmissionListRequest(string feedSubmmissionId)
3 {
4
5 GetFeedSubmissionListRequest request = new GetFeedSubmissionListRequest();
6 request.Merchant = merchantId;
7
8 request.FeedSubmissionIdList = new IdList();
9 request.FeedSubmissionIdList.Id = new List<string>(new string[] { feedSubmmissionId });
10
11 return request;
12 }
13 #endregion

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

  • 得到Amazon处理报告,使用FeedSubmissionResultRequest()接口,示例代码如下:


 1  #region 构造请求FeedSubmissionResultRequest信息
2 private GetFeedSubmissionResultRequest FeedSubmissionResultRequest(string feedSubmmissionId)
3 {
4
5 GetFeedSubmissionResultRequest request = new GetFeedSubmissionResultRequest();
6
7 string path = feedSubmmissionId + ".xml";//保存结果至本地
8 FileStream stream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite);
9
10 request.Merchant = merchantId;
11 request.FeedSubmissionId = feedSubmmissionId;
12 request.FeedSubmissionResult = stream;
13
14 return request;
15 }
16 #endregion

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

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

Amazon MWS 上传数据 (二) 构造请求

时间: 2024-10-11 23:03:14

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

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

前面介绍了设置服务和构造请求,现在介绍提交请求. 上传数据,查询上传操作的工作状态,和处理上传操作返回的报告操作使用的Amazon API 分别为:SubmitFeed(),FeedSubmissionListRequest(),GetFeedSubmissionResult(). SubmitFeed()-- 提交请求,代码示例: 1 #region AmazonSubmitFeed 2 /// <summary> 3 /// 提交请求 4 /// </summary> 5 pu

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

Amazon 上传数据的流程为: 通过 SubmitFeed 操作.加密标头和所有必需的元数据(包括 FeedType 的值在内),来提交 XML 或文本型数据文件.正如亚马逊 MWS的所有提交内容一样,您还必须包括验证信息.SubmitFeed 操作可返回 FeedSubmissionId 的值,您可以使用该值,通过 GetFeedSubmissionList 操作,对上传数据状态进行定期检查. 如果亚马逊 MWS仍在处理请求,则 GetFeedSubmissionList 操作的 FeedP

IOS 网络开发NSURLSession(四)UploadTask(上传数据+图片)

原创blog,转载请注明出处 blog.csdn.net/hello_hwc 前言: UploadTask继承自DataTask.不难理解,因为UploadTask只不过在Http请求的时候,把数据放到Http Body中.所以,用UploadTask来做的事情,通常直接用DataTask也可以实现.不过,能使用封装好的API会省去很多事情,何乐而不为呢? Demo下载链接 http://download.csdn.net/detail/hello_hwc/8557791 Demo里包括了三种T

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

原文:重新想象 Windows 8.1 Store Apps (89) - 通信的新特性: 下载数据, 上传数据, 上传文件 [源码下载] 作者:webabcd 介绍重新想象 Windows 8.1 Store Apps 之通信的新特性 下载数据(显示下载进度,将下载数据保存到本地) 上传数据(显示上传进度) 上传文件 示例HTTP 服务端WebServer/HttpDemo.aspx.cs /* * 用于响应 http 请求 */ using System; using System.IO;

iOS开发--http协议 post上传数据

NSDictionary *dic=[NSDictionary dictionaryWithObjectsAndKeys:@"123",@"longitude",@"30",@"latitude",@"上传数据",@"message",nil];    //dictionaryToNSJoson    NSError *err=nil;    NSData *jasonData=[NSJ

_00017 Flume的体系结构介绍以及Flume入门案例(往HDFS上传数据)

博文作者:妳那伊抹微笑 个性签名:世界上最遥远的距离不是天涯,也不是海角,而是我站在妳的面前,妳却感觉不到我的存在 技术方向:hadoop,数据分析与挖掘 转载声明:可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明,谢谢合作! qq交流群:214293307  (期待与你一起学习,共同进步) # 学习前言 想学习一下Flume,网上找了好多文章基本上都说的很简单,只有一半什么的,简直就是坑爹,饿顿时怒火就上来了,学个东西真不容易,然后自己耐心的把这些零零碎碎的东西整理整理,各种

ASIHTTPRequest框架使用(4)--上传数据

数据上传是通过ASIFormDataRequest类实现的.相当于HTML的表单,因此ASIFormDataRequest请求对象的作用相当于提交表单数据,默认是Post请求方法. - (IBAction)onClick:(id)sender { NSString *strUrl = @"http://iosbook3.com/service/upload.php"; NSURL *url = [NSURL URLWithString:[strUrl URLEncodedString]

Struts , Jsp 上传数据乱码问题

今天拿出以前的代码,想重构.却发现运行起来都是乱码,原来都是好好的.心里一着急,就上网去搜索答案. 看了一大堆的Struts中文乱码解决办法. 我总结一下,(1)Jsp方面,最好写上<%@ page pageEncoding="UTF-8" contentType="text/html;charset=UTF-8"%> (2) Struts.xml配置上,配置i18n.encoding 属性,值也为UTF-8(最好!) (3) 如果还是不行,则就要自己写

Struts2实现文件上传(二)

Struts2实现文件上传 文件上传页面 file.jsp: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <% String path = request.getContextPath(); Str