Hola, tengo un problema es que no alcanzo a comprender del todo como "Bloquear" una petición HTTP por que utilizo Wait For (Resumable).
Miren el caso:
Selecciono mis elementos de mi base de datos local, y luego envío los datos a una API pero no se envían de forma apropiada por que, como es un evento "no bloqueante" sobrescribe los valores "actuales" por el último, les anexo un ejemplo de lo que tengo:
Lo que quisiera es buscar la forma de hacer "Bloqueante el HTTP JOB" el evento de envío al API para que todo se inserte de manera apropiada y no inserte sólo el último, o ¿cómo sería la manera de hacer que se envíe los datos de manera apropiada?
Miren el caso:
Selecciono mis elementos de mi base de datos local, y luego envío los datos a una API pero no se envían de forma apropiada por que, como es un evento "no bloqueante" sobrescribe los valores "actuales" por el último, les anexo un ejemplo de lo que tengo:
B4X:
Sub FirstStep
'Get Data from SQLite
SQL.BeginTransaction
Try
Cursor = SQL.ExecQuery("SELECT column1, column1 FROM table WHERE something = 0")
For i = 0 To Cursor.RowCount -1
Cursor.Position = i
Dim Column1 As String = Cursor.GetInt("column1")
Dim Column2 As String = Cursor.GetInt("column2")
SendData(Column1, Column2)
Next
SQL.TransactionSuccessful
Catch
Log(LastException.Message)
End Try
SQL.EndTransaction
End Sub
Sub SendData(Column1 As Int, Column2 As Int)
Dim Data As Map
Data.Initialize
Data.Put("data1", Column1)
Data.Put("data2", Column2)
Dim JSONGenerator As JSONGenerator
JSONGenerator.Initialize(Data)
Dim JSONString As String
JSONString = JSONGenerator.ToString
HTTP.PostString("http://"&IP&":8081/petition", JSONString)
HTTP.GetRequest.SetContentType("application/json")
HTTP.GetRequest.Timeout = 30000
Wait For (HTTP) JobDone(response As HttpJob)
If response.Success Then
Dim Successful As Boolean = response.Success
' If the Data are Inserted on the WebService THEN: UPDATE MY SQLite DB
If Successful Then
SQL.BeginTransaction
Try
SQL.ExecNonQuery2("UPDATE table SET status = 1 WHERE something = ?", Array As Object(Column1))
SQL.TransactionSuccessful
Catch
Log(LastException.Message)
End Try
SQL.EndTransaction
Else
Log("Nope, ERROR")
End If
End If
HTTP.Release
End Sub
Lo que quisiera es buscar la forma de hacer "Bloqueante el HTTP JOB" el evento de envío al API para que todo se inserte de manera apropiada y no inserte sólo el último, o ¿cómo sería la manera de hacer que se envíe los datos de manera apropiada?