Sample code for 30+ languages & platforms
Tcl

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 Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

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

set rest [new_CkRest]

# 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 
# 
set bTls 1
set port 443
set bAutoReconnect 1
set success [CkRest_Connect $rest "mws.amazonservices.com" $port $bTls $bAutoReconnect]
if {$success != 1} then {
    puts "ConnectFailReason: [CkRest_get_ConnectFailReason $rest]"
    puts [CkRest_lastErrorText $rest]
    delete_CkRest $rest
    exit
}

CkRest_put_Host $rest "mws.amazonservices.com"

CkRest_AddQueryParam $rest "AWSAccessKeyId" "0PB842EXAMPLE7N4ZTR2"
CkRest_AddQueryParam $rest "Action" "RequestReport"
CkRest_AddQueryParam $rest "EndDate" "2008-06-26T18:12:21"
CkRest_AddQueryParam $rest "MWSAuthToken" "amzn.mws.4ea38b7b-f563-7709-4bae-87aeaEXAMPLE"
CkRest_AddQueryParam $rest "Marketplace" "ATVPDKIKX0DER"
CkRest_AddQueryParam $rest "ReportType" "_GET_MERCHANT_LISTINGS_DATA_"
CkRest_AddQueryParam $rest "SellerId" "A1XEXAMPLE5E6"
CkRest_AddQueryParam $rest "SignatureMethod" "HmacSHA256"
CkRest_AddQueryParam $rest "SignatureVersion" "2"
CkRest_AddQueryParam $rest "StartDate" "2009-01-03T18:12:21"
CkRest_AddQueryParam $rest "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.
CkRest_AddMwsSignature $rest "POST" "/Reports/2009-01-01" "mws.amazonservices.com" "MWS_SECRET_KEY"

set responseXml [CkRest_fullRequestFormUrlEncoded $rest "POST" "/Reports/2009-01-01"]
if {[CkRest_get_LastMethodSuccess $rest] != 1} then {
    puts [CkRest_lastErrorText $rest]
    delete_CkRest $rest
    exit
}

if {[CkRest_get_ResponseStatusCode $rest] != 200} then {
    # Examine the request/response to see what happened.
    puts "response status code = [CkRest_get_ResponseStatusCode $rest]"
    puts "response status text = [CkRest_responseStatusText $rest]"
    puts "response header: [CkRest_responseHeader $rest]"
    puts "response body: $responseXml"
    puts "---"
    puts "LastRequestStartLine: [CkRest_lastRequestStartLine $rest]"
    puts "LastRequestHeader: [CkRest_lastRequestHeader $rest]"
}

# Examine the XML returned in the response body.
puts "$responseXml"
puts "----"
puts "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>

set xml [new_CkXml]

CkXml_LoadXml $xml $responseXml

set RequestReportResponse_xmlns [CkXml_getAttrValue $xml "xmlns"]
set ReportRequestId [CkXml_getChildContent $xml "RequestReportResult|ReportRequestInfo|ReportRequestId"]
set ReportType [CkXml_getChildContent $xml "RequestReportResult|ReportRequestInfo|ReportType"]
set StartDate [CkXml_getChildContent $xml "RequestReportResult|ReportRequestInfo|StartDate"]
set EndDate [CkXml_getChildContent $xml "RequestReportResult|ReportRequestInfo|EndDate"]
set Scheduled [CkXml_getChildContent $xml "RequestReportResult|ReportRequestInfo|Scheduled"]
set SubmittedDate [CkXml_getChildContent $xml "RequestReportResult|ReportRequestInfo|SubmittedDate"]
set ReportProcessingStatus [CkXml_getChildContent $xml "RequestReportResult|ReportRequestInfo|ReportProcessingStatus"]
set RequestId [CkXml_getChildContent $xml "ResponseMetadata|RequestId"]

delete_CkRest $rest
delete_CkXml $xml