Saltar al contenido
CrossFly es 100% open sourceSíguenos en GitHub
CrossFlyCrossFly
Empezar

Esta página fue traducida automáticamente del portugués y puede contener errores. La versión en portugués es la canónica.

Red y HTTP

Otra página honesta: el framework no trae un cliente HTTP de alto nivel (nada de Http.get() ergonómico expuesto a la app). Usas java.net o una lib (OkHttp ya está en el classpath, usada internamente por los mapas).

La regla obligatoria

Haz la petición fuera del paint thread y vuelve con Component.onUI(...) para tocar la UI (ver Trabajo en segundo plano).

Descargar bytes — Utils.getRemoteFile(url)

Atajo para descargar el contenido de una URL:

new Thread(() -> {
   byte[] dados = Utils.getRemoteFile("https://api.exemplo.com/dados");  // null en error O en WebGL
   if (dados == null) { Component.onUI(() -> Hint.show("Falha na rede", 2000)); return; }
   String corpo = new String(dados);
   Component.onUI(() -> mostrar(corpo));
}).start();

⚠️ getRemoteFile retorna null en error HTTP, excepción y en WebGL/TeaVM — comprueba siempre.

JSON con Jackson (no Gson)

El estándar del proyecto es Jackson (com.fasterxml.jackson.databind.ObjectMapper):

ObjectMapper mapper = new ObjectMapper();
new Thread(() -> {
   try {
      byte[] json = Utils.getRemoteFile("https://api.exemplo.com/clientes");
      if (json == null) return;
      List<Cliente> clientes = mapper.readValue(json, new TypeReference<List<Cliente>>(){});
      Component.onUI(() -> lista.setItems(clientes));
   } catch (Exception e) { Debug.log("parse: " + e); }
}).start();

GET/POST con java.net

Cuando necesites control (headers, POST), usa HttpURLConnection/OkHttp directamente — siempre en un hilo de fondo, resultado de vuelta con onUI(...).

⚠️ Limitaciones en WebGL/TeaVM

En el destino Web, las llamadas HTTP tienen restricciones (CORS, sin sockets directos) y getRemoteFile retorna null. Trata ese caso o deshabilita la función en Web (ver platforms).

Buenas prácticas

  • Nunca hagas red en el paint thread — la UI se congela.
  • Jackson, no Gson (consistencia con el resto del proyecto).
  • Comprueba null/excepción en toda respuesta; muestra el error al usuario vía Hint/Alert.

Errores comunes

  • Buscar Http.get()/cliente ya hecho — no existe; usa java.net/OkHttp.
  • Ignorar que getRemoteFile es null en WebGL.
  • Parsear/tocar la UI directamente en el hilo de red (sin onUI).

Véase también

¿Te resultó útil esta página?