laurokarlos
Member
Hola de nuevo, no se porque el anterior post no aparece. Tengo este codigo en B4A que debería devolverme una respuesta desde una API pero los _ResponseSuccess y _ResponseError no se disparan. Que está sucediendo??? vi en otro post que el Httpjob no estaba trabajando con normalidad...
@Erel, @asales saben que estaría sucediendo?
@Erel, @asales saben que estaría sucediendo?
Ejemplo:
Sub Button1_Click
GetLiveMatches
End Sub
Sub GetLiveMatches
Dim job As HttpJob
job.Initialize("LiveMatchesJob", Me)
job.Download("https://v3.football.api-sports.io/fixtures?live=all")
job.GetRequest.SetHeader("x-rapidapi-host", "v3.football.api-sports.io")
job.GetRequest.SetHeader("x-rapidapi-key", "672239e740516f0166befb45b11da634")
Log("Petición de partidos iniciada...")
' Muestra un mensaje de "Cargando..." en la UI
' Por ejemplo:
lblStatus.Text = "Cargando partidos..."
End Sub
' Este sub se ejecutará cuando la petición termine
Sub LiveMatchesJob_ResponseSuccess (job As HttpJob)
Log("--> SUB LIVE_MATCHES_JOB_RESPONSESUCCESS FUE LLAMADA")
' Verifica si la petición fue exitosa
If job.Success Then
Log("Respuesta de la API recibida")
Dim jsonResponse As String
jsonResponse = job.GetString
' Ahora necesitas parsear este JSON
ParseMatches(jsonResponse)
Else
' Maneja el caso de error si la petición no fue exitosa
Log("Error al obtener datos: " & job.ErrorMessage)
End If
' Libera los recursos del objeto Job
job.Release
End Sub
' Este sub se ejecutará si hay un error en la petición
'Sub LiveMatchesJob_ResponseError (joba As HttpJob, Reason As String, StatusCode As Int)
Sub LiveMatchesJob_ResponseError (job As HttpJob, Reason As String, StatusCode As Int)
Log("Error en la petición: " & Reason)
lblStatus.Text = "Error al cargar los datos: " & Reason
job.Release
End Sub
Sub ParseMatches(jsonString As String)
' Limpia cualquier vista anterior en la interfaz de usuario
PanelScrollView.Panel.RemoveAllViews
Dim parser As JSONParser
parser.Initialize(jsonString)
Dim jsonRoot As Map
jsonRoot = parser.NextValue
If jsonRoot.ContainsKey("response") Then
Dim responseList As List
responseList = jsonRoot.Get("response")
If responseList.Size > 0 Then
For Each matchMap As Map In responseList
' Extrae los datos de cada partido
Dim fixtureMap As Map = matchMap.Get("fixture")
Dim teamsMap As Map = matchMap.Get("teams")
Dim goalsMap As Map = matchMap.Get("goals")
Dim leagueMap As Map = matchMap.Get("league")
Dim homeTeamMap As Map = teamsMap.Get("home")
Dim awayTeamMap As Map = teamsMap.Get("away")
Dim homeGoals As Int = goalsMap.Get("home")
Dim awayGoals As Int = goalsMap.Get("away")
Dim leagueName As String = leagueMap.Get("name")
' Aquí llamarías a un sub para crear las vistas
CreateMatchView(homeTeamMap, awayTeamMap, homeGoals, awayGoals, leagueName)
Next
Else
Log("No hay partidos, muestra un mensaje")
lblStatus.Text = "No hay partidos en vivo en este momento."
End If
Else
' La clave "response" no existe en el JSON. La API no devolvió datos.
Log("La respuesta de la API no contiene la clave 'response'.")
lblStatus.Text = "No se pudieron obtener los datos de la API."
End If
End Sub