2016-06-01 16 views
0

Wenn ich GetReport aufruft, bekomme ich nur die Header für die tabulatorgetrennte Antwort. Wenn ich jedoch den Notizblock für RequestReport, RequestReportList verwende, benutze RequestId, um GeneratedReportId und GetReport mit dieser ID zu erhalten. Ich bekomme die erwarteten Ergebnisse.Amazon MWS _GET_MERCHANT_LISTINGS_DATA_ leer

Hat jemand eine Idee, warum mein Code nicht den Bericht wie das Scratchpad zieht?

  RequestReportRequest request = new RequestReportRequest(); 
      request.Merchant = settings.SellerId; 
      request.MarketplaceIdList = new IdList(); 
      request.MarketplaceIdList.Id = new List<string>(new string[] { settings.MarketplaceId }); 
      request.ReportType = "_GET_MERCHANT_LISTINGS_DATA_"; 

      RequestReportResponse requestResponse = _mws.RequestReport(request); 
      Thread.Sleep(15000); 
      Console.WriteLine(requestResponse.RequestReportResult.ReportRequestInfo.ReportProcessingStatus); 
      GetReportRequestListRequest reportRequestListRequest = new GetReportRequestListRequest(); 

      reportRequestListRequest.Merchant = settings.SellerId; 
      List<ReportRequestInfo> requestInfos = new List<ReportRequestInfo>(); 

      GetReportRequestListResponse reportRequestListResponse = new GetReportRequestListResponse(); 
      reportRequestListResponse = _mws.GetReportRequestList(reportRequestListRequest); 
      GetReportRequestListResult reportRequestListResult = new GetReportRequestListResult(); 
      reportRequestListResult = reportRequestListResponse.GetReportRequestListResult; 
      requestInfos = reportRequestListResult.ReportRequestInfo; 

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

      } 

      GetReportListRequest listRequest = new GetReportListRequest(); 
      listRequest.Merchant = settings.SellerId; 
      listRequest.ReportRequestIdList = new IdList(); 
      listRequest.ReportRequestIdList.Id.Add(requestResponse.RequestReportResult.ReportRequestInfo.ReportRequestId); 

      GetReportListResponse listResponse = _mws.GetReportList(listRequest); 

      GetReportListResult getReportListResult = listResponse.GetReportListResult; 

      GetReportRequest reportRequest = new GetReportRequest(); 
      reportRequest.Merchant = settings.SellerId; 
      reportRequest.WithReportId(getReportListResult.ReportInfo[0].ReportId); 

      GetReportResponse reportResponse = new GetReportResponse(); 
      string fileName = dataPath + "\\report-" + getReportListResult.ReportInfo[0].ReportId + ".txt"; 
      reportRequest.Report = File.Open(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite); 
      reportResponse = _mws.GetReport(reportRequest); 

Antwort

1

Ich entfernte die MarketplaceId von ReportRequest und es funktioniert gut. Ich bin mir nicht sicher, wieso es den Bericht nicht mit spezifiziert hat, aber es funktioniert ohne die Information.

Diese 2 Zeilen vom obigen Code entfernt.

 request.MarketplaceIdList = new IdList(); 
     request.MarketplaceIdList.Id = new List<string>(new string[] { settings.MarketplaceId });