Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

MWS RequestReport (Amazon Marketplace Web Service)

See more Amazon MWS Examples

Creates a report request and submits the request to Amazon MWS.

See Amazon MWS RequestReport for more information.

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.Rest,
  Chilkat.Xml;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  rest: TRest;
  bTls: Boolean;
  port: Integer;
  bAutoReconnect: Boolean;
  responseXml: string;
  xml: TXml;
  RequestReportResponse_xmlns: string;
  ReportRequestId: string;
  ReportType: string;
  StartDate: string;
  EndDate: string;
  Scheduled: string;
  SubmittedDate: string;
  ReportProcessingStatus: string;
  RequestId: string;

begin
  success := False;

  //  This example requires the Chilkat API to have been previously unlocked.
  //  See Global Unlock Sample for sample code.

  rest := TRest.Create;

  //  Connect to the Amazon MWS REST server.
  //  
  //  Make sure to connect to the correct Amazon MWS Endpoint, otherwise
  //  you'll get an HTTP 401 response code.
  //  
  //  The possible servers are:
  //  
  //  North America (NA) 	https://mws.amazonservices.com
  //  Europe (EU) 	https://mws-eu.amazonservices.com
  //  India (IN) 	https://mws.amazonservices.in
  //  China (CN) 	https://mws.amazonservices.com.cn
  //  Japan (JP) 	https://mws.amazonservices.jp 
  //  
  bTls := True;
  port := 443;
  bAutoReconnect := True;
  success := rest.Connect('mws.amazonservices.com',port,bTls,bAutoReconnect);
  if (success <> True) then
    begin
      WriteLn('ConnectFailReason: ' + rest.ConnectFailReason);
      WriteLn(rest.LastErrorText);
      Exit;
    end;

  rest.Host := 'mws.amazonservices.com';

  rest.AddQueryParam('AWSAccessKeyId','0PB842EXAMPLE7N4ZTR2');
  rest.AddQueryParam('Action','RequestReport');
  rest.AddQueryParam('EndDate','2008-06-26T18:12:21');
  rest.AddQueryParam('MWSAuthToken','amzn.mws.4ea38b7b-f563-7709-4bae-87aeaEXAMPLE');
  rest.AddQueryParam('Marketplace','ATVPDKIKX0DER');
  rest.AddQueryParam('ReportType','_GET_MERCHANT_LISTINGS_DATA_');
  rest.AddQueryParam('SellerId','A1XEXAMPLE5E6');
  rest.AddQueryParam('SignatureMethod','HmacSHA256');
  rest.AddQueryParam('SignatureVersion','2');
  rest.AddQueryParam('StartDate','2009-01-03T18:12:21');
  rest.AddQueryParam('Version','2009-01-01');

  //  Add the MWS Signature param.  (Also adds the Timestamp parameter using the curent system date/time.)
  //  The AddMwsSignature method adds the Timestamp and Signature query params.
  rest.AddMwsSignature('POST','/Reports/2009-01-01','mws.amazonservices.com','MWS_SECRET_KEY');

  responseXml := rest.FullRequestFormUrlEncoded('POST','/Reports/2009-01-01');
  if (rest.LastMethodSuccess <> True) then
    begin
      WriteLn(rest.LastErrorText);
      Exit;
    end;

  if (rest.ResponseStatusCode <> 200) then
    begin
      //  Examine the request/response to see what happened.
      WriteLn('response status code = ' + rest.ResponseStatusCode);
      WriteLn('response status text = ' + rest.ResponseStatusText);
      WriteLn('response header: ' + rest.ResponseHeader);
      WriteLn('response body: ' + responseXml);
      WriteLn('---');
      WriteLn('LastRequestStartLine: ' + rest.LastRequestStartLine);
      WriteLn('LastRequestHeader: ' + rest.LastRequestHeader);
    end;

  //  Examine the XML returned in the response body.
  WriteLn(responseXml);
  WriteLn('----');
  WriteLn('Success.');

  //  Sample Response

  //  Use this online tool to generate parsing code from sample XML: 
  //  Generate Parsing Code from XML

  //  <?xml version="1.0"?>
  //  <RequestReportResponse
  //      xmlns="http://mws.amazonaws.com/doc/2009-01-01/">
  //      <RequestReportResult>
  //          <ReportRequestInfo>
  //              <ReportRequestId>2291326454</ReportRequestId>
  //              <ReportType>_GET_MERCHANT_LISTINGS_DATA_</ReportType>
  //              <StartDate>2009-01-21T02:10:39+00:00</StartDate>
  //              <EndDate>2009-02-13T02:10:39+00:00</EndDate>
  //              <Scheduled>false</Scheduled>
  //              <SubmittedDate>2009-02-20T02:10:39+00:00</SubmittedDate>
  //              <ReportProcessingStatus>_SUBMITTED_</ReportProcessingStatus>
  //          </ReportRequestInfo>
  //      </RequestReportResult>
  //      <ResponseMetadata>
  //          <RequestId>88faca76-b600-46d2-b53c-0c8c4533e43a</RequestId>
  //      </ResponseMetadata>
  //  </RequestReportResponse>

  xml := TXml.Create;
  xml.LoadXml(responseXml);

  RequestReportResponse_xmlns := xml.GetAttrValue('xmlns');
  ReportRequestId := xml.GetChildContent('RequestReportResult|ReportRequestInfo|ReportRequestId');
  ReportType := xml.GetChildContent('RequestReportResult|ReportRequestInfo|ReportType');
  StartDate := xml.GetChildContent('RequestReportResult|ReportRequestInfo|StartDate');
  EndDate := xml.GetChildContent('RequestReportResult|ReportRequestInfo|EndDate');
  Scheduled := xml.GetChildContent('RequestReportResult|ReportRequestInfo|Scheduled');
  SubmittedDate := xml.GetChildContent('RequestReportResult|ReportRequestInfo|SubmittedDate');
  ReportProcessingStatus := xml.GetChildContent('RequestReportResult|ReportRequestInfo|ReportProcessingStatus');
  RequestId := xml.GetChildContent('ResponseMetadata|RequestId');


  rest.Free;
  xml.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.