Sample code for 30+ languages & platforms
Xbase++

Async Methods Returning an String

See more Async Examples

Demonstrates how to call an asynchronous method that returns a string. This example sends an HTTPS GET request to a URL and gets the HTML response.

Chilkat Xbase++ Downloads

Xbase++
LOCAL nSuccess
LOCAL oHttp
LOCAL oTask
LOCAL cHtml

nSuccess := 0

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

oHttp := CreateObject("Chilkat.Http")

oTask := oHttp:QuickGetStrAsync("https://www.chilkatsoft.com/helloWorld.html")
IF (oHttp:LastMethodSuccess == 0)
    ? oHttp:LastErrorText
    oHttp:destroy()
    RETURN
ENDIF

//  Start the background task.
nSuccess := oTask:Run()
IF (.NOT. nSuccess)
    ? oTask:LastErrorText
    oTask:destroy()
    oHttp:destroy()
    RETURN
ENDIF

//  The application is now free to do anything else

//  For this example, we'll simply sleep and periodically
//  check to see if the HTTPS GET if finished.
DO WHILE oTask:Finished != 1
    //  Sleep 100 ms.
    oTask:SleepMs(100)
ENDDO

//  A finished task could be one that was canceled, aborted, or truly finished.  

//  If the task was "canceled", it was canceled prior to actually starting.  This could
//  happen if the task was canceled while waiting in a thread pool queue to be scheduled by Chilkat's
//  background thread pool scheduler.  

//  If the task was "aborted", it indicates that it was canceled while running in a background thread.  
//  The ResultErrorText will likely indicate that the task was aborted.

//  If the task "completed", then it ran to completion, but the actual success/failure of the method
//  is determined by the result obtained via a GetResult* method.  (A "completed" task will
//  have a StatusInt equal to 7.   If the task finished, but was not completed, then it must've
//  been aborted or canceled:
IF (oTask:StatusInt != 7)
    ? "Task did not complete."
    ? "task status: " + oTask:Status
    oTask:destroy()
    oHttp:destroy()
    RETURN
ENDIF

//  The QuickGetStr method returns a string.  Therefore, after the task is finished,
//  we can get the string result by calling GetResultString.  This is the return value had
//  we called QuickGetStr synchronously.
cHtml := oTask:GetResultString()

? cHtml

oTask:destroy()

oHttp:destroy()