Visual FoxPro
Visual FoxPro
REST Read Binary Response into BinData Object (Amazon S3)
Demonstrates how to make a REST call that returns a binary response body. This example is valid for files that fit in memory. The example shows how to download a JPG from the Amazon S3 service.Chilkat Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL loRest
LOCAL lnBTls
LOCAL lnPort
LOCAL lnBAutoReconnect
LOCAL loAuthAws
LOCAL lnResponseStatusCode
LOCAL lcErrResponse
LOCAL loBdBody
lnSuccess = 0
* This example requires the Chilkat API to have been previously unlocked.
* See Global Unlock Sample for sample code.
loRest = CreateObject('Chilkat.Rest')
* Connect to the Amazon AWS REST server.
lnBTls = 1
lnPort = 443
lnBAutoReconnect = 1
lnSuccess = loRest.Connect("s3.amazonaws.com",lnPort,lnBTls,lnBAutoReconnect)
* ----------------------------------------------------------------------------
* Important: For buckets created in regions outside us-east-1,
* there are three important changes that need to be made.
* See Working with S3 Buckets in Non-us-east-1 Regions for the details.
* ----------------------------------------------------------------------------
* Provide AWS credentials for the REST call.
loAuthAws = CreateObject('Chilkat.AuthAws')
loAuthAws.AccessKey = "AWS_ACCESS_KEY"
loAuthAws.SecretKey = "AWS_SECRET_KEY"
loAuthAws.ServiceName = "s3"
lnSuccess = loRest.SetAuthAws(loAuthAws)
* Set the bucket name via the HOST header.
* In this case, the bucket name is "chilkat100".
loRest.Host = "chilkat100.s3.amazonaws.com"
* Send the request to download the JPG.
lnSuccess = loRest.SendReqNoBody("GET","/starfish.jpg")
IF (lnSuccess <> 1) THEN
? loRest.LastErrorText
RELEASE loRest
RELEASE loAuthAws
CANCEL
ENDIF
* Read the response header.
lnResponseStatusCode = loRest.ReadResponseHeader()
IF (lnResponseStatusCode < 0) THEN
? loRest.LastErrorText
RELEASE loRest
RELEASE loAuthAws
CANCEL
ENDIF
? "Response status code = " + STR(lnResponseStatusCode)
* We expect a 200 response status if the JPG data is coming.
* Otherwise, we'll get a string response body with an error message(or no response body).
IF (lnResponseStatusCode <> 200) THEN
lcErrResponse = loRest.ReadRespBodyString()
IF (loRest.LastMethodSuccess <> 1) THEN
? loRest.LastErrorText
ELSE
? lcErrResponse
ENDIF
RELEASE loRest
RELEASE loAuthAws
CANCEL
ENDIF
loBdBody = CreateObject('Chilkat.BinData')
lnSuccess = loRest.ReadRespBd(loBdBody)
IF (lnSuccess = 0) THEN
? loRest.LastErrorText
RELEASE loRest
RELEASE loAuthAws
RELEASE loBdBody
CANCEL
ENDIF
* Save the contents of the response body to a file.
lnSuccess = loBdBody.WriteFile("qa_output/starfish.jpg")
IF (lnSuccess = 1) THEN
? "Success"
ELSE
? "Failed to write file."
ENDIF
RELEASE loRest
RELEASE loAuthAws
RELEASE loBdBody