Sample code for 30+ languages & platforms
PureBasic

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

PureBasic
IncludeFile "CkRest.pb"
IncludeFile "CkXml.pb"

Procedure ChilkatExample()

    success.i = 0

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

    rest.i = CkRest::ckCreate()
    If rest.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ; 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.i = 1
    port.i = 443
    bAutoReconnect.i = 1
    success = CkRest::ckConnect(rest,"mws.amazonservices.com",port,bTls,bAutoReconnect)
    If success <> 1
        Debug "ConnectFailReason: " + Str(CkRest::ckConnectFailReason(rest))
        Debug CkRest::ckLastErrorText(rest)
        CkRest::ckDispose(rest)
        ProcedureReturn
    EndIf

    CkRest::setCkHost(rest, "mws.amazonservices.com")

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

    responseXml.s = CkRest::ckFullRequestFormUrlEncoded(rest,"POST","/Reports/2009-01-01")
    If CkRest::ckLastMethodSuccess(rest) <> 1
        Debug CkRest::ckLastErrorText(rest)
        CkRest::ckDispose(rest)
        ProcedureReturn
    EndIf

    If CkRest::ckResponseStatusCode(rest) <> 200
        ; Examine the request/response to see what happened.
        Debug "response status code = " + Str(CkRest::ckResponseStatusCode(rest))
        Debug "response status text = " + CkRest::ckResponseStatusText(rest)
        Debug "response header: " + CkRest::ckResponseHeader(rest)
        Debug "response body: " + responseXml
        Debug "---"
        Debug "LastRequestStartLine: " + CkRest::ckLastRequestStartLine(rest)
        Debug "LastRequestHeader: " + CkRest::ckLastRequestHeader(rest)
    EndIf

    ; Examine the XML returned in the response body.
    Debug responseXml
    Debug "----"
    Debug "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.i = CkXml::ckCreate()
    If xml.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkXml::ckLoadXml(xml,responseXml)

    RequestReportResponse_xmlns.s = CkXml::ckGetAttrValue(xml,"xmlns")
    ReportRequestId.s = CkXml::ckGetChildContent(xml,"RequestReportResult|ReportRequestInfo|ReportRequestId")
    ReportType.s = CkXml::ckGetChildContent(xml,"RequestReportResult|ReportRequestInfo|ReportType")
    StartDate.s = CkXml::ckGetChildContent(xml,"RequestReportResult|ReportRequestInfo|StartDate")
    EndDate.s = CkXml::ckGetChildContent(xml,"RequestReportResult|ReportRequestInfo|EndDate")
    Scheduled.s = CkXml::ckGetChildContent(xml,"RequestReportResult|ReportRequestInfo|Scheduled")
    SubmittedDate.s = CkXml::ckGetChildContent(xml,"RequestReportResult|ReportRequestInfo|SubmittedDate")
    ReportProcessingStatus.s = CkXml::ckGetChildContent(xml,"RequestReportResult|ReportRequestInfo|ReportProcessingStatus")
    RequestId.s = CkXml::ckGetChildContent(xml,"ResponseMetadata|RequestId")


    CkRest::ckDispose(rest)
    CkXml::ckDispose(xml)


    ProcedureReturn
EndProcedure