I am using HTTPUtils ( https://www.b4x.com/android/forum/threads/46565/#content ) and so far all is good until I tried to extract the response block returned OnError by the server ( I was unable to find a way to do it unless I am missing something).
B4X:
Sub hc_ResponseError (Response As HttpResponse, Reason As String, StatusCode As Int, TaskId As Int)
'Unable to get the info from Response on error
End Sub
When I examined our equivalent B4A code, I noticed that we are using OKHTTPResponse.
With B4I, it seems that I have to include the standard library iHttpUtils2 while with B4A I didn't (again if I am not wrong in here). But when I include iHttpUtils2 the compiler complains about a duplicate declaration for HttpJob because we are using a shared module named "HttpJob" between the B4A and B4I apps.
What is the best way around this without having to rename the shared module
Take a look a folder, where B4i is installed. Modify iHttpUtils2.b4xlib inside Libraries subfolder.
b4xlib is a zip file. Simply change extension and extract bas files.
Thanks for all your help, but somehow I guess we moved away from the initial problem that I was trying to solve in the first place. Perhaps my mistake.
My main goal is to be able to extract the response contents when the server returns an Error.
With B4A, Response.ErrorResponse holds everything I need
B4X:
Sub hc_ResponseError (Response As OkHttpResponse, Reason As String, StatusCode As Int, TaskId As Int)
Dim ServerResponse as String = Response.ErrorResponse
'I am able to decode the JSON string returned by the server in B4A
End Sub
In B4I, the response signature
B4X:
Sub hc_ResponseError (Response As HttpResponse, Reason As String, StatusCode As Int, TaskId As Int)
'How do I get the response contents in here.
'The server is returning a JSON block with information messages
End Sub
I remember this problem. When I wrote about 3 years ago, I asked to replace error code to 250 (pseudo-success). Web developer was very angry - he likes standards.
But then I read that Erel fixed this trouble. If to compare old and current release, a new release tries to replace Reason by Response.GetString.
B4X:
Sub hc_ResponseError (Response As HttpResponse, Reason As String, StatusCode As Int, TaskId As Int)
Log("ResponseError: " & Reason & ", status code: " & StatusCode)
Try
Dim j As String = Response.GetString
If j <> "" Then Reason = j
Catch
Reason = "(Error decoding response)"
End Try
CompleteJob(TaskId, False, Reason, Response)
End Sub
Try to correct your HttpUtils2Service.Bas. Probably, will work.