Функция MWS GetReport для API отчетов возвращает значение null?

Я пытаюсь получить отчет с данными о доставке FBA. У меня есть работающее приложение, которое успешно извлекает неотправленные заказы с Amazon. В общем, я взял этот код и изменил его на то, что мне нужно для заказов на отгрузку FBA. Я едва изменил рабочий код, чтобы получить отчет, и теперь функция GetReport возвращает ноль, и я не знаю, почему. Я передаю ReportId, поступающий из системы Amazon.

Если бы кто-нибудь мог просмотреть код и посмотреть, не передаю ли я нулевой объект или что-то в этом роде.

RequestReportRequest reportRequestRequest = new RequestReportRequest();
reportRequestRequest.Merchant = merchantId;
reportRequestRequest.Marketplace = marketplaceId;
reportRequestRequest.ReportType = "_GET_AMAZON_FULFILLED_SHIPMENTS_DATA_";
reportRequestRequest.StartDate = DateTime.Now.AddDays(-2);
reportRequestRequest.EndDate = DateTime.Now;

RequestReportResponse requestResponse = service.RequestReport(reportRequestRequest);
Thread.Sleep(15000);
Console.WriteLine(requestResponse.RequestReportResult.ReportRequestInfo.ReportProcessingStatus);
GetReportRequestListRequest reportRequestListRequest = new GetReportRequestListRequest();
reportRequestListRequest.Marketplace = marketplaceId;
reportRequestListRequest.Merchant = merchantId;
List<ReportRequestInfo> myListzz = new List<ReportRequestInfo>();

GetReportRequestListResponse reportRequestListResponse = new GetReportRequestListResponse();
reportRequestListResponse = service.GetReportRequestList(reportRequestListRequest);
GetReportRequestListResult reportRequestListResult = new GetReportRequestListResult();
reportRequestListResult = reportRequestListResponse.GetReportRequestListResult;
myListzz = reportRequestListResult.ReportRequestInfo;
while (myListzz[0].ReportProcessingStatus.ToString() != "_DONE_")
{
    Thread.Sleep(20000);
    reportRequestListResponse = service.GetReportRequestList(reportRequestListRequest);
    reportRequestListResult = reportRequestListResponse.GetReportRequestListResult;
    myListzz = reportRequestListResult.ReportRequestInfo;

}
GetReportListRequest listRequest = new GetReportListRequest();
listRequest.Merchant = merchantId;
listRequest.Marketplace = marketplaceId;
listRequest.ReportRequestIdList = new IdList();
listRequest.ReportRequestIdList.Id.Add(requestResponse.RequestReportResult.ReportRequestInfo.ReportRequestId);

GetReportListResponse listResponse = service.GetReportList(listRequest);


//MessageBox.Show(listResponse.GetReportListResult.ReportInfo.ToString());
GetReportListResult getReportListResult = listResponse.GetReportListResult;

GetReportRequest reportRequest = new GetReportRequest();
reportRequest.Merchant = merchantId;
reportRequest.Marketplace = marketplaceId;
reportRequest.WithReportId(getReportListResult.ReportInfo[0].ReportId);


GetReportResponse reportResponse = new GetReportResponse();

{
    reportResponse = service.GetReport(reportRequest); // <=== ERROR!!!!
}
catch (MarketplaceWebServiceException e)
{
    Console.WriteLine(e);
}
StreamReader sr = new StreamReader(reportRequest.Report);
Console.WriteLine(sr.ReadToEnd());
sr.Close();

person Lewis Cutter III    schedule 12.08.2011    source источник


Ответы (1)


После этой строки:

GetReportResponse reportResponse = new GetReportResponse(); 

Вы должны указать файл отчета, например:

reportRequest.Report = File.Open("C:\\AmazonReport.csv", FileMode.OpenOrCreate, FileAccess.ReadWrite);

Затем он запишет отчет в этот файл. Итак, вы можете увидеть свой отчет там.

person orc_orc    schedule 15.11.2011
comment
Спасибо, это сработало для меня после той же проблемы в java. - person Chris; 04.12.2014