Buongiorno,
Sono tornato a B4A dopo ben 8 anni (ho sviluppato un paio di app nel 2012) e... ho dimenticato (quasi tutto). Avevo iniziato con B4ppc (mitico Erel!) e mi sentivo in paradiso nell'utilizzare linguaggi piuttosto vicini al mio cuore (uso Visual Basic da quando era istallato di default sulle macchine IBM: Basic, GWBasic, ecc.). Scusate la digressione e... torno al mio problema.
Come dicevo sono parecchio arrugginito nella programmazione B4A. Ho bisogno di leggere un file Json generato da un server Linux mediante una pagina PHP richiamata dall'app. Alla fine del lavoro la stringa (un array) viene restituita con Job.success. Ho trovato una vecchia app tra quelle del forum e l'ho adattata a php 7.2 e alle nuove esigenze di Android. E tutto funziona bene fin quando uso un server xampp o un NAS locale: la stringa viene ben formata e restituita correttamente. Se, invece, metto lo stesso identico file php su un server remoto nom restituisce una cippa, anzi dà errore. Il server usa una connessione protetta. Potrebbe essere questo il problema?
Questo il listato:
E questo è l'errore:
Qualcuno riesce a darmi una mano, per favore?
Sono tornato a B4A dopo ben 8 anni (ho sviluppato un paio di app nel 2012) e... ho dimenticato (quasi tutto). Avevo iniziato con B4ppc (mitico Erel!) e mi sentivo in paradiso nell'utilizzare linguaggi piuttosto vicini al mio cuore (uso Visual Basic da quando era istallato di default sulle macchine IBM: Basic, GWBasic, ecc.). Scusate la digressione e... torno al mio problema.
Come dicevo sono parecchio arrugginito nella programmazione B4A. Ho bisogno di leggere un file Json generato da un server Linux mediante una pagina PHP richiamata dall'app. Alla fine del lavoro la stringa (un array) viene restituita con Job.success. Ho trovato una vecchia app tra quelle del forum e l'ho adattata a php 7.2 e alle nuove esigenze di Android. E tutto funziona bene fin quando uso un server xampp o un NAS locale: la stringa viene ben formata e restituita correttamente. Se, invece, metto lo stesso identico file php su un server remoto nom restituisce una cippa, anzi dà errore. Il server usa una connessione protetta. Potrebbe essere questo il problema?
Questo il listato:
Lista servizi offerti:
Sub Activity_Create(FirstTime As Boolean)
'Do not forget to load the layout file created with the visual designer. For example:
'Activity.LoadLayout("Layout1")
Activity.LoadLayout("Servizi")
Activity.Title ="Servizi"
Label1.Visible=False
ListView1.TwoLinesLayout.Label.Color=Colors.DarkGray
ServerIP="locridestore.it"
IdStore=1
Dim GetServices As HttpJob
GetServices.Initialize("GetServ", Me)
GetServices.download2("https://" & ServerIP & "/appuntamenti.php?IdStore=1", Array As String ("action", "GetServices"))
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub JobDone(Job As HttpJob)
ProgressDialogHide
If Job.Success Then
Dim res As String
res = Job.GetString
Log("Back from Job:" & Job.JobName )
Log("Response from server: " & res)
Dim Json As JSONParser
Json.Initialize(res)
Select Job.JobName
Case "GetServ"
Dim ListOfServices As List
Dim nameService As String
Dim durationService As Int
Dim costService As Int
Label1.Visible=True
Label1.Text="Response " & Job.GetString
ListOfServices = Json.NextArray
ListView1.Clear
If ListOfServices.Size=0 Then
ListView1.AddSingleLine ("Nessun servizio trovato...")
Else
For i = 0 To ListOfServices.Size - 1
Dim mServices As Map
mServices = ListOfServices.Get(i)
nameService = mServices.Get("NomeTratt")
durationService = mServices.Get("Durata")
costService = mServices.Get("Costo")
ListView1.AddSingleLine (nameService & ", " & durationService &"min., " & costService&"Eur")
Next
End If
'Case "CountP"
' PersonsListview.Clear
' PersonsListview.AddSingleLine ("Persons in table: " & parser.NextValue)
'Case "InsertNewP"
' PersonsListview.Clear
' PersonsListview.AddSingleLine (parser.NextValue)
End Select
Else
ToastMessageShow("Error: " & Job.ErrorMessage, True)
End If
Job.Release
End Sub
E questo è l'errore:
Qualcuno riesce a darmi una mano, per favore?