DataFlex
DataFlex
Amazon SP-API Upload Feed
See more Amazon SP-API Examples
Upload a feed document to the feed previously created.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Variant vSbRequestBody
Handle hoSbRequestBody
Handle hoJsonFeedInfo
String sUrl
Handle hoHttp
Variant vResp
Handle hoResp
String sTemp1
Integer iTemp1
Move False To iSuccess
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
// Load your own feed data file.
Get Create (RefClass(cComChilkatStringBuilder)) To hoSbRequestBody
If (Not(IsComObjectCreated(hoSbRequestBody))) Begin
Send CreateComObject of hoSbRequestBody
End
Get ComLoadFile Of hoSbRequestBody "C:/AAWorkarea/test-despatch-upload.txt" "utf-8" To iSuccess
If (iSuccess = False) Begin
Showln "Failed to load test-despatch-upload.txt."
Procedure_Return
End
// The SP-API Create Feed example returned JSON such as this.
// {
// "feedDocumentId": "amzn1.tortuga.4.eu.8fb6f9c4-XXXX-4e7f-824f-XXXXXXXXXXXXX.ZZZZZZZZZZZZZZ",
// "url": "https://tortuga-prod-eu.s3-eu-west-1.amazonaws.com/%2FNinetyDays/amzn1.tortuga.4.eu.8fb6f9c4-XXXX-4e7f-824f-XXXXXXXXXXXXX.ZZZZZZZZZZZZZZ?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20230222T014944Z&X-Amz-SignedHeaders=content-type%3Bhost&X-Amz-Expires=300&X-Amz-Credential=XXXXXXXXXXXXXXXXX%2F20230222%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Signature=XXXXXXXXXXXXXXXXXXXXXXXXXXXX"
// }
// Load the JSON feed file created by this example: SP-API Create Feed
Get Create (RefClass(cComChilkatJsonObject)) To hoJsonFeedInfo
If (Not(IsComObjectCreated(hoJsonFeedInfo))) Begin
Send CreateComObject of hoJsonFeedInfo
End
Get ComLoadFile Of hoJsonFeedInfo "qa_data/json/sp_api_feed_upload_info.json" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoJsonFeedInfo To sTemp1
Showln sTemp1
Procedure_Return
End
// Get the pre-signed URL
Get ComStringOf Of hoJsonFeedInfo "url" To sUrl
// We can use the Chilkat HTTP object because the URL is pre-signed.
// We don't need to add our own AWS authentication because it's already in the pre-signed URL,
// which is only valid for short amount of time.
Get Create (RefClass(cComChilkatHttp)) To hoHttp
If (Not(IsComObjectCreated(hoHttp))) Begin
Send CreateComObject of hoHttp
End
// NOTE: The string "text/tab-separated-values; charset=UTF-8" must match exactly the contentType specified when creating the feed.
Get Create (RefClass(cComChilkatHttpResponse)) To hoResp
If (Not(IsComObjectCreated(hoResp))) Begin
Send CreateComObject of hoResp
End
Get pvComObject of hoSbRequestBody to vSbRequestBody
Get pvComObject of hoResp to vResp
Get ComHttpSb Of hoHttp "PUT" sUrl vSbRequestBody "utf-8" "text/tab-separated-values; charset=UTF-8" vResp To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoHttp To sTemp1
Showln sTemp1
Procedure_Return
End
Get ComStatusCode Of hoResp To iTemp1
Showln "status code = " iTemp1
Get ComStatusText Of hoResp To sTemp1
Showln "status text = " sTemp1
Showln "response body:"
Get ComBodyStr Of hoResp To sTemp1
Showln sTemp1
End_Procedure