Interceptor Là Gì

  -  
vietvuevent.vn chia sẻ các trang bị về Game / Phần Mềm / Thủ Thuật dành riêng cho máy tính với đầy đủ tin xuất xắc nhất với những đọc tin kiến thức hỏi đáp.

GIỚI THIỆU :Trong lúc Retrofit thực hiện gửi mọi HTTPhường request một biện pháp khá dễ dàng và đơn giản, nó cũng chất nhận được một chính sách kỹ thuận để cai quản với rewrite các requests. Điều này được triển khai với sự giúp sức của OkHttp Interceptor. Interceptor có nghĩa là “có tác dụng can thiệp một cái nào đấy trong câu hỏi mang lại được đích đến của nó”, giống như nlỗi nghĩa của chính nó Interceptor can thiệp vào trong 1 request, thay đổi request đó cùng tiếp đến gửi lại đến điêm đến của chính nó (server).lấy ví dụ như như là khi chúng ta gửi phần đông request từ ứng dụng của người sử dụng mà lại phải thêm Autorization token như thể Header. Thay vày auto thêm thuộc Header vào toàn bộ các điểm cuối nhỏng ở đây, bạn có thể chỉ việc thêm 1 Interceptor sẽ tiến hành call những lần bạn gửi một request.

Bạn đang xem: Interceptor là gì

Đang xem: Interceptor là gì


Table of Contents


1.Tổng quan về OkHttp Interceptor

Một quan niệm ưng thuận mang lại những Interceptor là : Các Interceptor là nhằm quan lại ngay cạnh, kiểm soát và điều chỉnh với có tác dụng ngăn các request cùng phần đông đánh giá. Thông thường những Interceptor thực hiện thêm, xóa , biến hóa những Headers bên trên request hoặc trên những phản hồi được trả về (từ server).

2. Các mẫu mã Interceptor :

Interceptor về cnạp năng lượng bản được chia thành 2 loại :

Application Interceptor: Đây tà tà hầu hết interceptor bao gồm Lever cao được thực hiện để ngăn những các request lên hoặc response đánh giá về. Chúng thường được thực hiện để viết lại các header/query ở cả request cùng response. Những interceptor chắc chắn là được Điện thoại tư vấn một lượt trong cả Khi phản hồi được hấp thụ từ bỏ bộ nhớ lưu trữ (cache).Network Interceptor : Đây là hầu như interceptor tất cả Lever phải chăng rộng được áp dụng nhằm theo dõi những request cùng response được truyền quan tiền mạng. Nó thì siêu hữu ích nhằm quan sát và theo dõi việc redirect, retry và tạo nên truy vấn tới những chi tiết của request. Chúng không được điện thoại tư vấn giả dụ response đã có được tàng trữ.

Xem thêm: Compressive Strength Là Gì, Nghĩa Của Từ Compressive Strength

Để thấy rõ rộng sự khác biệt giữa Network Interceptor cùng Application Interceptor, bọn họ cùng quan tiền cạnh bên mô hình tiếp sau đây nhé :

*

3.Implement Interceptor:

Việc khởi chế tạo ra hoặc khai báo một Interceptor thì khá tiện lợi. Chúng ta nhà rất cần được implement interface Interceptor và override lại method interceptor() nhỏng được thực hiện dưới đây. Cả 2 nhiều loại Interceptor là Application vs Network Interceptor thì được implement vì chưng và một interface :

private static class CustomInterceptor implements Interceptor Override public Response intercept(Chain chain) throws IOException /* chain.request() returns original request that you can work with(modify, rewrite) */ Request request = chain.request(); // Here you can rewrite the request /* chain.proceed(request) is the điện thoại tư vấn which will initiate the HTTP work. This Gọi invokes the request and returns the response as per the request. */ Response response = chain.proceed(request); //Here you can rewrite/modify the response return response; Một cuộc call đến chain.proceed(request) là một trong những phần đặc trưng của mỗi implement của interceptor. Cái method trông có vẻ 1-1 gian này là địa điểm toàn bộ những công việc của HTTPhường xẩy ra, đây là vị trí request được khởi tạo ra và một response sẽ được hấp thụ về nhằm thỏa mãn nhu cầu request kia.

Một khi chúng ta đang quan niệm interface interceptor như bên trên, bạn đã có thể thực thi nói cùng với OkHttp Client nlỗi sinh hoạt dưới đây. Và hiện nay chúng ta nên đăng ký với Retrofit.Buider, bằng cách này đến toàn bộ những request OkHttp Client đang dược sử dụng cùng Interceptor của các bạn sẽ được hotline đến với có hiệu lực thực thi hiện hành.

OkHttpClient okHttpClient = new OkHttpClient.Builder() .addInterceptor(new CustomInterceptor()) // This is used khổng lồ add ApplicationInterceptor..addNetworkInterceptor(new CustomInterceptor()) //This is used to lớn add NetworkInterceptor..build();//Defining the Retrofit using BuilderRetrofit retrofit = new Retrofit.Builder().baseUrl(BASE_URL) // Bắt phải thêm base_url.client(okHttpClient) //The Htttp client to lớn be used for requests.addConverterFactory(GsonConverterFactory.create()) // Thỏng viện để convert từ resonse sang trọng POJO.build();

4. Ghi lại những log của Request và Response

Nlỗi là đa số developers thì bọn họ buộc phải log ra những lịch sử cùng tình trạng của các request/response. Như vậy rất quan trọng vị chúng ta cần biết đều gì đã xảy ra cùng với hầu như request/response được gửi đi. Những logs này sẽ mang đến chúng ta biết về headers, request/response toàn thân cùng cụ thể quan trọng đặc biệt mang lại Việc debug và sửa những lỗi. Và hết sức may mắn là ko cạnh tranh để editor hoàn toàn có thể hiển thị ra đều log này với Retrofit

*

Retrofit hỗ trợ mang lại chúng ta với cùng một Custom Interceptor – HttpLoggingInterceptor hoàn toàn có thể đăng register với OkHttp Client. Với object này bạn cũng có thể in ra toàn bộ những log cho các hoạt động của HTTP trải qua client nlỗi sau :

HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).build();Retrofit retrofit = new Retrofit.Builder().baseUrl(“https://backover.example.com”).client(client).addConverterFactory(GsonConverterFactory.create()).build();Trong HttpLoggingInterceptor.Level gồm những param :Level.BASIC : log ra hầu hết mẫu request/responseLevel.BODY: log ra những dòng, và header với body tươn ứng (ví như có)Level.HEADERS: logs ra hầu hết dòng vào header khớp ứng cùng với nóLevel.NONE : không log ra gì cả

5.Rewriting Request – Adding/ Removing Header :

Đến phía trên bọn họ đẽ biết làm cho vậy làm sao nhằm tạo ra một Custom Interceptor. Trong phần này họ sẽ tò mò phương pháp thực hiện Custom Interceptor nhằm modify headers gửi với cùng một network request nhé.

Xem thêm: Cách Lưu Trữ Bitcoin Trong Ổ Cứng, Vứt Ổ Cứng Chứa, Cách Lưu Trữ Bitcoin Trong Ổ Cứng

Trong ví dụ dưới đây, họ thuộc đọc một response code với build một new response bắt đầu dựa trên reponse code:

private static class RequestInterceptor implements Interceptor { Override public Response intercept(Chain chain) throws IOException chain.request() returns original request that you can work with(modify, rewrite) */ Request originalRequest = chain.request(); Headers headers = new Headers.Builder() .add(“Authorization”, “auth-value”) .add(“User-Agent”, “you-app-name”) .build(); Request newRequest = originalRequest.newBuilder() .addHeader(“Authorization”, “auth-value”) //thêm một header với name với value. .addHeader(“User-Agent”, “you-app-name”) .cacheControl(CacheControl.FORCE_CACHE) // Đặt kiểm soát và điều hành header là của request này, replace lên số đông header sẽ bao gồm. .headers(headers) //Removes all headers on this builder & adds headers. .method(originalRequest.method(), null) // Adds request method & request toàn thân .removeHeader(“Authorization”) // Removes all the headers with this name .build(); /* chain.proceed(request) là một lời call sẽ tạo HTTPhường work. Lời Call này sẽ tiến hành request với rả về response khớp ứng. */ Response response = chain.proceed(newRequest); return response;

6. Rewriting Response với OkHttp Interceptor

Tương tự, OkHttp Interceptor rất có thể được thực hiện để rewite/ modify những response trả về tự VPS. Với ngôi trường hòa hợp này chúng ta chẳng thể rewrite header của response tuy vậy chúng ta cũng có thể chuyển đổi body toàn thân của response nlỗi đoạn code sau đây.private static class ResponseInterceptor implements Interceptor Overridepublic Response intercept(Chain chain) throws IOException // We obtain the response using chain.proceed() API. This invokes the request & return the responseResponse response = chain.proceed(chain.request());try JSONObject jsonObject = new JSONObject(); if (response.code() == 200) jsonObject.put(“code”, 200); jsonObject.put(“status”, “OK”); jsonObject.put(“message”, new JSONObject(response.body().string())); else jsonObject.put(“code”, 404); jsonObject.put(“status”, “ERROR”); jsonObject.put(“message”, new JSONObject(response.body().string())); MediaType contentType = response.body().contentType(); ResponseBody body = ResponseBody.create(contentType, jsonObject.toString()); return response.newBuilder().body(body).build(); catch (JSONException e) e.printStackTrace();return response;TỔNG KẾT .bởi vậy, trong bài viết này tôi đã reviews về Interceptor với vài cách thực hiện nhưng mà họ thường tốt chạm mặt. Hi vọng bài viết rất có thể giúp ích cho chính mình.

Have a nice day!

Tsi khảo :

https://square.github.io/okhttp/3.x/logging-interceptor/okhttp3/logging/HttpLoggingInterceptor.Level.html

https://androidclarified.com/okhttp-interceptor-retrofit2-example/?fbclid=IwAR0xkUxt6frm6R9UsfDJR-pkND02FtM4zVa0u0fmD1o9ANeQ0Deg-0Ka6L0