5.2 Xử lý các mã lỗi và lỗi mạng trong phản hồi trong Retrofit – Lập trình android

Trong lập trình android sử dụng thư viện Retrofit, bạn có thể xử lý mã lỗi và lỗi mạng trong phản hồi của mình bằng cách sử dụng các khái niệm như InterceptorCallback. Dưới đây là một hướng dẫn cơ bản về cách xử lý lỗi trong Retrofit:

  1. Xử lý lỗi mạng: Khi có lỗi mạng như không có kết nối, thời gian chờ quá lâu hoặc lỗi DNS, Retrofit sẽ ném một IOException. Bạn có thể bắt ngoại lệ này trong phần gọi API và thực hiện xử lý tùy ý. Ví dụ:
java
Call<YourResponse> call = apiService.yourApiMethod();
call.enqueue(new Callback<YourResponse>() {
    @Override
    public void onResponse(Call<YourResponse> call, Response<YourResponse> response) {
        // Xử lý phản hồi thành công
    }

    @Override
    public void onFailure(Call<YourResponse> call, Throwable t) {
        if (t instanceof IOException) {
            // Xử lý lỗi mạng
        } else {
            // Xử lý các lỗi khác
        }
    }
});
  1. Xử lý mã lỗi HTTP: Retrofit sử dụng thư viện Converter để chuyển đổi phản hồi từ dạng tệp JSON/XML thành đối tượng Java. Khi một mã lỗi HTTP trả về (ví dụ: 404 Not Found, 500 Internal Server Error), Retrofit sẽ tự động gọi callback onResponse và chuyển đối tượng lỗi tương ứng. Bạn có thể sử dụng Response.errorBody() để nhận được đối tượng ResponseBody chứa chi tiết lỗi. Ví dụ:
java
Call<YourResponse> call = apiService.yourApiMethod();
call.enqueue(new Callback<YourResponse>() {
    @Override
    public void onResponse(Call<YourResponse> call, Response<YourResponse> response) {
        if (response.isSuccessful()) {
            // Xử lý phản hồi thành công
        } else {
            ResponseBody errorBody = response.errorBody();
            // Xử lý mã lỗi HTTP và errorBody
        }
    }

    @Override
    public void onFailure(Call<YourResponse> call, Throwable t) {
        // Xử lý lỗi mạng
    }
});
  1. Sử dụng Interceptor: Bạn có thể sử dụng Interceptor để kiểm soát quá trình gửi và nhận phản hồi từ máy chủ. Interceptor cho phép bạn kiểm tra và chỉnh sửa các yêu cầu và phản hồi trước khi chúng được gửi và nhận. Bạn có thể sử dụng Interceptor để thêm thông tin header, thay đổi URL, hoặc xử lý các lỗi khác. Ví dụ:
java
OkHttpClient client = new OkHttpClient.Builder()
    .addInterceptor(new Interceptor() {
        @Override
        public Response intercept(Chain chain) throws IOException {
            Request request = chain.request();

            // Thêm header vào yêu cầu
            request = request.newBuilder()
                .header("Authorization", "Bearer token")
                .build();

            Response response = chain.proceed(request);

            // Xử lý các lỗi khác

            return response;
        }
    })
    .build();

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl(BASE_URL)
    .client(client)
    .addConverterFactory(GsonConverterFactory.create())
    .build();

Bằng cách sử dụng các kỹ thuật này, bạn có thể xử lý các mã lỗi và lỗi mạng trong phản hồi của Retrofit một cách linh hoạt và tùy chỉnh theo yêu cầu của ứng dụng của mình.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top