Pular para o conteúdo
CrossFly é 100% open sourceSiga no GitHub
CrossFlyCrossFly
Começar

Rede e HTTP

Outra página honesta: o framework não traz um cliente HTTP de alto nível (nada de Http.get() ergonômico exposto ao app). Você usa java.net ou uma lib (OkHttp já está no classpath, usada internamente pelos mapas).

A regra obrigatória

Faça a requisição fora da paint thread e volte com Component.onUI(...) para tocar a UI (ver Trabalho em background).

Baixar bytes — Utils.getRemoteFile(url)

Atalho para baixar o conteúdo de uma URL:

new Thread(() -> {
   byte[] dados = Utils.getRemoteFile("https://api.exemplo.com/dados");  // null em erro OU em 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 em erro HTTP, exceção e em WebGL/TeaVM — sempre cheque.

JSON com Jackson (não Gson)

O padrão do projeto é 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 com java.net

Quando precisar de controle (headers, POST), use HttpURLConnection/OkHttp diretamente — sempre numa thread de fundo, resultado de volta com onUI(...).

⚠️ Limitações em WebGL/TeaVM

No alvo Web, as chamadas HTTP têm restrições (CORS, sem sockets diretos) e getRemoteFile retorna null. Trate esse caso ou desabilite o recurso no Web (ver platforms).

Boas práticas

  • Nunca faça rede na paint thread — a UI congela.
  • Jackson, não Gson (consistência com o resto do projeto).
  • Cheque null/exceção em toda resposta; mostre erro ao usuário via Hint/Alert.

Erros comuns

  • Procurar Http.get()/cliente pronto — não existe; use java.net/OkHttp.
  • Ignorar que getRemoteFile é null em WebGL.
  • Parsear/tocar UI direto na thread de rede (sem onUI).

Veja também

Esta página foi útil?