Utilização do OkGo no Android para Requisições HTTP com OkHttp

OkGo é uma biblioteca de rede para Android que encapsula o OkHttp, facilitando a realização de requisições HTTP com recrusos como cache e gerenciamento de callbacks. Este guia aborda a confiugração e o uso básico para requisições GET e POST.

Para integrar o OkGo em um projeto Android, adicione as dependências no arquivo build.gradle. O pacote principal é obrigatório, enquanto as bibliotecas auxiliares podem ser incluídas conforme necessário.

// Pacote principal obrigatório
implementation 'com.lzy.net:okgo:3.0.4'

// Bibliotecas opcionais para integração com RxJava e gerenciamento de tarefas
// implementation 'com.lzy.net:okrx:1.0.2' // Para RxJava 1
// implementation 'com.lzy.net:okrx2:2.0.2' // Para RxJava 2
// implementation 'com.lzy.net:okserver:2.0.5' // Para download e upload gerenciados

A requisição GET abaixo demonstra como buscar dados de uma API, com cnofigurações de tag para cancelamento e cache personalizado. Note o uso de um callback genérico e a manipulação da resposta na thread principal.

OkGo.<String>get("https://exemplo.com/api/recursos")
    .tag("atividade_principal")  // Tag para identificar e cancelar a requisição
    .cacheKey("chave_recursos")  // Chave única para armazenamento em cache
    .cacheMode(CacheMode.IF_NONE_CACHE_REQUEST)  // Modo de cache condicional
    .headers("Accept", "application/json")  // Cabeçalhos adicionais
    .execute(new AbsCallback<String>() {
        @Override
        public void onSuccess(Response<String> resposta) {
            String corpoResposta = resposta.body();
            Log.d("RespostaGET", corpoResposta);
            // Atualizar a interface com os dados obtidos
        }

        @Override
        public void onError(Response<String> resposta) {
            Throwable erro = resposta.getException();
            Log.e("ErroGET", "Falha na requisição", erro);
        }
    });

Para requisições POST com parâmetros, é possível enviar dados no corpo ou como formulário. O exemplo a seguir envia parâmetros de formulário e processa a resposta para extrair um objeto JSON.

Map<String, String> parametros = new HashMap<>();
parametros.put("identificador", "12345");
parametros.put("tipo", "consulta");

OkGo.<String>post("https://exemplo.com/api/dados")
    .tag("solicitacao_dados")
    .params(parametros)  // Parâmetros como formulário
    .cacheKey("cache_dados_post")
    .cacheMode(CacheMode.NO_CACHE)  // Sem cache para dados dinâmicos
    .execute(new StringCallback() {
        @Override
        public void onSuccess(Response<String> resposta) {
            String jsonResposta = resposta.body();
            try {
                JSONObject objeto = new JSONObject(jsonResposta);
                // Processar o objeto JSON, por exemplo:
                String valor = objeto.getString("chave");
                Log.d("RespostaPOST", "Valor: " + valor);
            } catch (JSONException e) {
                Log.e("ErroJSON", "Falha ao analisar resposta", e);
            }
        }

        @Override
        public void onError(Response<String> resposta) {
            super.onError(resposta);
            Log.e("ErroPOST", "Requisição falhou");
        }
    });

Tags: OkGo OkHttp android Requisições HTTP Biblioteca de Rede

Publicado em 6-9 03:15 por Thomas