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給我們的標識,通過他才能找到我們的操作。
這里將處理結果報告直接存放到本地。我一直沒想通,為什么返回的結果信息,是在構造請求的時候處理,為什么不是在得到結果后再設置保存路徑等信息。這個疑問我可能沒寫清,

至此構造請求已經簡述完畢。 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM