Хорошо, после пары часов поиска в Google, я думаю, я нашел ответ на этот вопрос.
Образцы библиотеки Amazon никогда не получат правильных результатов, если вы последуете за ними.
Итак, я получил правильный ответ с этого сайта: download-amazon-reports-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 отчетов Amazon 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);
}
}