時間一晃而過又過了兩周,博客園更新的速度確實有點慢,今天我要分享的是對請求報告的調用。
在文檔中,相信大家也看了下面這個流程圖吧?
相關流程,在文檔中也有細說,我就不一一去Copy了:http://docs.developer.amazonservices.com/zh_CN/reports/Reports_Overview.html
接着我們說ReportTypes 枚舉,請求報告類型有很多種,我們可以可以使用 ReportTypes 枚舉,來指定報告類型,從而獲取我們想要得到的相關數據。
ReportTypes枚舉有以下分類:
具體大家可以參考以下詳細文檔:
http://docs.developer.amazonservices.com/zh_CN/reports/Reports_ReportType.html
獲取相關的報告也分兩種形式,有的報告通過:RequestReport 操作,有的是通過ManageReportSchedule或者GetReportList的API接口來獲取。
接下來就以GetReportList為例

1 public class ReportClient 2 { 3 4 private ReportClient() { } 5 6 7 public ReportClient(string reportType) 8 { 9 this.ReportType = reportType; 10 } 11 12 public string ReportType { get; set; } 13 14 /// <summary> 15 /// 獲得賬戶信息 16 /// </summary> 17 private static AccountConfig Account 18 { 19 get 20 { 21 return AccountConfig.Instance; 22 } 23 } 24 25 26 27 private MarketplaceWebServiceConfig GetConfig() 28 { 29 var config = new MarketplaceWebServiceConfig(); 30 config.ServiceURL = Account.ServiceUrl; 31 return config; 32 } 33 34 private MarketplaceWebServiceClient GetClient() 35 { 36 var config = this.GetConfig(); 37 var client = new MarketplaceWebServiceClient(Account.AccessKeyId, Account.SecretAccessKey, Account.AppName, Account.AppVersion, config); 38 return client; 39 } 40 41 public void GetReportList() 42 { 43 var reportList = GetReportListInfo(); 44 foreach (var item in reportList) 45 { 46 GetReport(item); 47 } 48 49 } 50 51 52 private List<string> GetReportListInfo() 53 { 54 List<string> reportIdList = new List<string>(); 55 var client = GetClient(); 56 var request = new GetReportListRequest(); 57 request.Acknowledged = false; 58 request.Merchant = Account.MerchantId; 59 request.ReportTypeList = new TypeList(); 60 request.ReportTypeList.Type = new List<string>() { ReportType }; 61 request.Marketplace = Account.MarketplaceId; 62 request.AvailableFromDate = new DateTime(2014, 7, 15, 0, 0, 0); 63 request.AvailableToDate = new DateTime(2014, 7, 31, 0, 0, 0); 64 65 var response = client.GetReportList(request); 66 var result = response.GetReportListResult; 67 result.ReportInfo.ForEach(u => reportIdList.Add(u.ReportId)); 68 69 return reportIdList; 70 } 71 72 73 /// <summary> 74 /// 獲得請求報告: 未測試 75 /// </summary> 76 /// <param name="client"></param> 77 /// <param name="reportId"></param> 78 /// <returns></returns> 79 public void GetReport(string reportId) 80 { 81 var client = this.GetClient(); 82 var request = new GetReportRequest(); 83 request.Merchant = Account.MerchantId; 84 request.ReportId = reportId; 85 86 string fileName = GetFilePath(); 87 request.Report = File.Open(fileName, FileMode.Create, FileAccess.ReadWrite); 88 GetReportResponse response = client.GetReport(request); 89 request.Report.Close(); 90 var result = response.GetReportResult; 91 if (!result.IsSetContentMD5()) 92 return;