如何使用亚马逊 MWS API 下载亚马逊报告



我正在使用亚马逊报告 API 客户端库 - C# - 版本 2009-01-01,来自以下链接:Amazon Reports Client C#。

问题是,即使遵循该库中的示例,来自 MarketplaceWebServiceClient.cs 类的 GetReport(( 方法也不会在 GetReportResponse(( 响应中返回真正的报告。

那里似乎发生了一些事情,GetReportResponse 返回 NULL 而不是任何数据。

好的,经过几个小时的谷歌搜索,我想我找到了这个问题的答案。 如果您遵循亚马逊库样本,它们将永远不会得到正确的结果。

所以,我从这个网站上得到了正确的答案:下载-亚马逊-报告-using-mws-api

基本上,最重要的行是这些:

var request = new GetReportRequest();
//... (more details in a few)
var path = request.ReportId + "_" + Guid.NewGuid();
var thePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\" + string.Format("{0}.txt", path);
request.Report = File.Open(thePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);  <-- this line makes the trick!

请求报告时,您需要打开一个文件并传递引用。 返回的报告文件将位于thePath.

这是我创建的测试方法,可用于检索报告。相应地更新您的 MWS API 凭据。您还需要从上面的链接下载亚马逊报告 API 库 C#。

[TestMethod]
public void TestGetReport()
{
// Developer AWS access key
var accessKey = "[YOUR-ACCESS-KEY]";
// Developer AWS secret key
var secretKey = "[YOUR-SECRET-KEY]";
// The client application name
var appName = "MWS Reports API SAMPLE";
// The client application version
var appVersion = "1.0";
// The endpoint for region service and version (see developer guide)
// ex: https://mws.amazonservices.com
var serviceURL = "https://mws.amazonservices.com";
var config = new MarketplaceWebServiceConfig();
config.ServiceURL = serviceURL;
var client = new MarketplaceWebServiceClient(accessKey, secretKey, appName, appVersion, config);
var request = new GetReportRequest();
var sellerId = "[YOUR-SELLER-ID]";
request.Merchant = sellerId;
var mwsAuthToken = "[YOUR-MWS-AUTH-TOKEN]";
request.MWSAuthToken = mwsAuthToken;
request.ReportId = "[YOUR-REPORT-ID]";
var path = request.ReportId + "_" + Guid.NewGuid();
var thePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\" + string.Format("{0}.txt", path);
request.Report = File.Open(thePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
//request.ReportTypeList = new TypeList { Type = new List<string> { "_GET_V2_SETTLEMENT_REPORT_DATA_XML_" } };
try
{
GetReportResponse response = null;
response = client.GetReport(request);
Console.WriteLine("Response:");
var rhmd = response.ResponseHeaderMetadata;
// We recommend logging the request id and timestamp of every call.
Console.WriteLine("RequestId: " + rhmd.RequestId);
Console.WriteLine("Timestamp: " + rhmd.Timestamp);
var responseXml = response.ToXML();
Console.WriteLine(responseXml);
request.Report.Close();
}
catch (MarketplaceWebServiceException ex)
{
// Exception properties are important for diagnostics.
ResponseHeaderMetadata rhmd = ex.ResponseHeaderMetadata;
Console.WriteLine("Service Exception:");
if (rhmd != null)
{
Console.WriteLine("RequestId: " + rhmd.RequestId);
Console.WriteLine("Timestamp: " + rhmd.Timestamp);
}
Console.WriteLine("Message: " + ex.Message);
Console.WriteLine("StatusCode: " + ex.StatusCode);
Console.WriteLine("ErrorCode: " + ex.ErrorCode);
Console.WriteLine("ErrorType: " + ex.ErrorType);
}
catch (Exception ex)
{
Console.WriteLine("Message: " + ex.Message);
}
}

最新更新