Description
Reads the response body.
Applies to
Syntax
objectname.ReadData ( data, bufferSize )
Argument |
Description |
---|---|
objectname |
The name of the HTTPClient object for which you want to read the response body. |
data |
A blob value into which the function returns data. |
bufferSize |
A long value specifying the buffer size. |
Usage
When the data is returned in the gzip or brotli format (with the response header "Content-Encoding: gzip" or "Content-Encoding: br"), the data will be automatically extracted in this function.
Return value
Integer.
Returns values as follows. If any argument's value is null, the method returns null.
1 -- Success
0 -- Reading data is finished
-1 -- General error
-2 -- Timed out
-3 -- Failed to decompress data.
Example 1
Integer li_rc Blob lblb_photo, lblb_NextData HttpClient lnv_HttpClient lnv_HttpClient = Create HttpClient // Not to read data automatically after sending request (default is true) lnv_HttpClient.AutoReadData = false // Send request using GET method li_rc = lnv_HttpClient.SendRequest("GET", "https://demo.appeon.com/PB/webapi_client/employee/102/photo") // Receive large data if li_rc = 1 and lnv_HttpClient.GetResponseStatusCode() = 200 then do while true li_rc = lnv_HttpClient.ReadData(lblb_NextData, 1024*16) if li_rc = 0 then exit // Finish receiving data if li_rc = -1 then exit // Error occurred lblb_photo += lblb_NextData loop end if
Example 2
This example demonstrates how to get large data (over 20 MB):
Long ll_FileNum, ll_rtn, ll_loop, ll_len Dec{0} ldc_Count, ldc_Length Blob lb_temp String ls_url, ls_response, ls_Length HttpClient lhc_Client lhc_Client = Create HttpClient lhc_Client.ClearRequestHeaders() ls_url = "https://download.test.com/file001.zip" // Use HEAD method to get the file size ll_rtn = lhc_Client.sendrequest( "HEAD", ls_url ) ls_response = lhc_Client.GetResponseHeaders() ls_Length = lhc_Client.GetResponseHeader( "Content-Length" ) ldc_Length = Dec ( ls_Length ) If ldc_Length <= 0 Then MessageBox( "Tips", "File length is zero." ) Return End If ll_len = Long ( ldc_Length / 10000 ) hpb_1.maxposition = 10000 // hpb_1 is a hprogressbar control hpb_1.position = 0 // Not to read data automatically after sending request (default is true) lhc_Client.autoreaddata = false ll_rtn = lhc_Client.sendrequest( "GET", ls_url ) //Receive 16KB data every time ll_loop = 1024 * 16 //Write data to the file, because the blob variable is not suitable for large data ll_FileNum = FileOpen("file001.zip", StreamMode!, Write!, LockWrite!, Replace!) Do While ( ll_rtn = 1 ) lb_temp = Blob ( "" ) ll_rtn = lhc_Client.ReadData( lb_temp, ll_loop) FileWrite(ll_FileNum, lb_temp) ldc_Count += Len ( lb_temp ) hpb_1.position = Long( ldc_Count/ll_len) yield() Loop FileClose(ll_FileNum) If IsValid ( lhc_Client ) Then Destroy ( lhc_Client )