Como fazer requisições de rede usando a biblioteca Retrofit?
sobes.tech IA
Resposta da IA
-
Adicionar dependência: No
build.gradle(app).// Retrofit implementation 'com.squareup.retrofit2:retrofit:<latest_version>' implementation 'com.squareup.retrofit2:converter-gson:<latest_version>' // ou outro conversor -
Criar interface API: Definir métodos para cada requisição de rede.
interface ApiService { @GET("users/{id}") Call<User> getUser(@Path("id") int userId); @POST("users") Call<User> createUser(@Body User user); }@GET,@POST, e outras anotações definem o tipo de método HTTP."users/{id}"- caminho relativo ao recurso.@Path,@Query,@Body- anotações para os parâmetros da requisição.Call<T>- tipo de valor de retorno para requisições assíncronas ou síncronas.
-
Criar instância de Retrofit: Configurar a URL base e adicionar um conversor.
Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.example.com/") .addConverterFactory(GsonConverterFactory.create()) // Usar Gson para parsear JSON .build(); ApiService apiService = retrofit.create(ApiService.class); -
Executar requisição: De forma assíncrona ou síncrona.
De forma assíncrona (recomendado para o thread de UI):
Call<User> call = apiService.getUser(123); call.enqueue(new Callback<User>() { @Override public void onResponse(Call<User> call, Response<User> response) { if (response.isSuccessful()) { User user = response.body(); // Processar resposta bem-sucedida } else { // Processar erro de resposta (por exemplo, 404, 500) } } @Override public void onFailure(Call<User> call, Throwable t) { // Processar erro de rede ou exceção } });De forma síncrona (não usar no thread de UI):
try { Response<User> response = apiService.getUser(123).execute(); if (response.isSuccessful()) { User user = response.body(); // Processar resposta bem-sucedida } else { // Processar erro de resposta } } catch (IOException e) { // Processar erro } -
Processar resposta: Nos métodos
onResponseou apósexecutebem-sucedido. Verificar o status da resposta (response.isSuccessful()) e extrair os dados (response.body()). Tratar erros emonFailureou no blococatchna requisição síncrona.
Retrofit também suporta integração com corrotinas (com retrofit2:retrofit2-kotlin-coroutines-adapter), RxJava (com retrofit2:adapter-rxjava), e outras bibliotecas para programação assíncrona.