Sample code for 30+ languages & platforms
Delphi ActiveX

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 Delphi ActiveX Downloads

Delphi ActiveX
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Integer;
rest: TChilkatRest;
bTls: Integer;
port: Integer;
bAutoReconnect: Integer;
responseXml: WideString;
xml: TChilkatXml;
RequestReportResponse_xmlns: WideString;
ReportRequestId: WideString;
ReportType: WideString;
StartDate: WideString;
EndDate: WideString;
Scheduled: WideString;
SubmittedDate: WideString;
ReportProcessingStatus: WideString;
RequestId: WideString;

begin
success := 0;

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

rest := TChilkatRest.Create(Self);

// 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 := 1;
port := 443;
bAutoReconnect := 1;
success := rest.Connect('mws.amazonservices.com',port,bTls,bAutoReconnect);
if (success <> 1) then
  begin
    Memo1.Lines.Add('ConnectFailReason: ' + IntToStr(rest.ConnectFailReason));
    Memo1.Lines.Add(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 <> 1) then
  begin
    Memo1.Lines.Add(rest.LastErrorText);
    Exit;
  end;

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

// Examine the XML returned in the response body.
Memo1.Lines.Add(responseXml);
Memo1.Lines.Add('----');
Memo1.Lines.Add('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 := TChilkatXml.Create(Self);
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');
end;