Buongiorno. Chiedo un aiuto per un comportamento che non restituisce nessun risultato e nessun errore, per cui non so proprio cosa verificare
Ho il seguente codice:
Nella chiamata a SetHeader(j) aggiungo gli header richiesti dall'EndPoint e li ho scrupolosamente verificati: fra gli altri ho aggiunbto un timeout di 20 second
La stessa chiamata usando un API Client (uso Insomnia) funziona correttamente.
Il problema è che nella Sub LoadCustomers dopo ma "Wait For (j) JobeDone" il processo si blocca senza raggiungere "If j.Success Then". Il log restituisce
Dopo circa 30 secondi mi viene restituito il messaggio sul dispositivo "L'App *MyApp* non risponde" con la possibilità di chiudere o attendere (ovviamente chiudo).
L'errore sul Log B4A è il seguente
Avete suggerimenti?
Grazie
Ho il seguente codice:
B4X:
Public Sub GetCustomers(target As Object)
If Not(m_customers.IsInitialized) Then
m_customers.Initialize
Wait For (LoadCustomers(target, "")) Complete (unfinished As String)
If unfinished<>"" Then
LoadCustomers(target, unfinished)
Else
Log("DOWNLOADED!!!!!")
End If
End If
End Sub
Private Sub LoadCustomers(target As Object, nxt As String) As ResumableSub
Dim unfinished As String=""
Dim J As HttpJob
J.Initialize("customers",target)
Dim uri As String
uri=$"https://myurl/customers"$
If nxt<>"" Then uri=$"${uri}&next=${nxt}"$
Log(uri)
j.Download(uri)
setHeader(j)
Wait For (j) JobDone (j As HttpJob)
If j.Success Then
Dim parser As JSONParser
parser.Initialize(j.GetString)
Dim root As Map = parser.NextObject
Dim db As DatabaseManager
db.Initialize
db.AddCustomers(root.Get("dati"))
If root.ContainsKey("next") Then unfinished=root.Get("next")
Log(unfinished)
Else
Log(j.ErrorMessage)
End If
j.Release
Return unfinished
End Sub
La stessa chiamata usando un API Client (uso Insomnia) funziona correttamente.
Il problema è che nella Sub LoadCustomers dopo ma "Wait For (j) JobeDone" il processo si blocca senza raggiungere "If j.Success Then". Il log restituisce
*** Service (httputils2service) Create ***
Dopo circa 30 secondi mi viene restituito il messaggio sul dispositivo "L'App *MyApp* non risponde" con la possibilità di chiudere o attendere (ovviamente chiudo).
L'errore sul Log B4A è il seguente
Ho già aggiornato alla versione 12.20 ma il problema persiste.** Activity (main) Pause, UserClosed = false **
java.lang.RuntimeException: Unable to create service com.mbconsulenze.httputils2service: java.lang.RuntimeException: anywheresoftware.b4a.B4AUncaughtException
at android.app.ActivityThread.handleCreateService(ActivityThread.java:4381)
at android.app.ActivityThread.access$1700(ActivityThread.java:273)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2112)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:8107)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)
Caused by: java.lang.RuntimeException: anywheresoftware.b4a.B4AUncaughtException
at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:188)
at anywheresoftware.b4a.BA.raiseEvent(BA.java:201)
at com.mbconsulenze.httputils2service.onCreate(httputils2service.java:56)
at android.app.ActivityThread.handleCreateService(ActivityThread.java:4369)
... 8 more
Caused by: anywheresoftware.b4a.B4AUncaughtException
at anywheresoftware.b4a.Msgbox.debugWait(Msgbox.java:210)
at anywheresoftware.b4a.debug.Debug.wait(Debug.java:217)
at anywheresoftware.b4a.shell.Shell.debugPause(Shell.java:544)
at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:417)
at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:255)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:157)
... 11 more
Avete suggerimenti?
Grazie