Question:
I’m calling PTextAsync.
Set task = http.PTextAsync("POST", sURL, sPostData, "UTF-8", "plain/text", 0, 0)
After the task has completed, how do I get to the response object? i.e. resp.StatusCode, resp.BodyStr
Each type of Chilkat object that can possibly be the return value of a synchronous method call will have a method named LoadTaskResult.
For example, when http.PText is called synchronously,it would return an HttpResponse object. When called asynchronously (i.e. http.PTextAsync) it returns a Task object. When the task completes, the task object (internally) has a reference to the returned HttpResponse object.
Chilkat could have designed the software so that an app would get the returned object via a call to the Task object. For example, something like (in pseudo-code)
response = task.GetHttpResponseObject(); // This is NOT what Chilkat does..This would be most straightforward, but would cause internal linkage across Chilkat classes, and for various reasons it's best to keep unrelated internal code from referencing each other.
The chosen solution is a little more roundabout. To get the returned object (such as the HttpResponse object), your app creates a new instance of the object and then calls LoadTask result. For example, in VB6:
Dim response As New ChilkatHttpResponse success = response.LoadTaskResult(task)Now you have a response object that's been loaded with the response object returned asynchronously in the background thread.
It appears to be working, although success is 0, I expected 1. The response code: 200, bodystr is fine.
Dim response As New ChilkatHttpResponse success = response.LoadTaskResult(task) If (success <> 1) Then MsgBox "success?: " & success & " - " & http.LastErrorText End If
Here is the log:
ChilkatLog: PText: DllDate: Mar 11 2016 ChilkatVersion: 9.5.0.56 UnlockPrefix: xxxxxxxxx Username: xxx-PC-00201:xxxxx Architecture: Little Endian; 32-bit Language: ActiveX VerboseLogging: 0 binaryRequest: fullRequest: a_synchronousRequest: generateRequestHeader: httpRequestGenStartLine: genStartLine: startLine: POST /net2.0/Login/login/LoginMenu.aspx HTTP/1.1 --genStartLine --httpRequestGenStartLine addCookies: Not auto-adding cookies. sendCookies: 1 cookieDir: --addCookies --generateRequestHeader fullHttpRequest: domain: xxxxxxxx port: 80 ssl: 0 openHttpConnection: Opening connection directly to HTTP server. httpHostname: xxx-pc-00201 httpPort: 80 ssl: 0 HTTP connection succeeded. --openHttpConnection connectTime: Elapsed time: 0 millisec sendRequestHeader: sendHeaderElapsedMs: 16 --sendRequestHeader statusCode: 200 statusText: OK readResponseBody: contentLength: 53620 --readResponseBody --fullHttpRequest success: 1 --a_synchronousRequest success: 1 --fullRequest --binaryRequest Success. --PText --ChilkatLog
Thanks! I remember this problem and thought it was fixed. I'll have a look -- maybe the error is specific to the ActiveX..
I fixed the problem and if you need, I can provide a pre-release. Otherwise, it will be in the next version released. A workaround would be to check the response.StatusCode property after calling LoadTaskResult. If the StatusCode equals 0, then the response was not loaded.