2017-04-17 14 views
5

Tôi biết có thể thêm máy đánh chặn vào tất cả các yêu cầu qua OkHttpClient, nhưng tôi muốn biết liệu có thể thêm tiêu đề vào tất cả các yêu cầu trong Okhttp ngoại trừ một yêu cầu hoặc hai yêu cầu sử dụng OkHttpClient hay không.Làm cách nào để thêm trình chặn chặn vào tất cả các yêu cầu API ngoại trừ một hoặc hai yêu cầu?

Ví dụ, trong API của tôi tất cả các yêu cầu đòi hỏi một mã thông báo bearer (Authorization: Bearer token-here tiêu đề) trừ các oauth/token tuyến (để nhận mã) và api/users (đăng ký một người dùng). Có thể thêm trình chặn cho tất cả các yêu cầu ngoại trừ các yêu cầu được loại trừ bằng cách sử dụng OkHttpClient trong một bước hoặc tôi có nên thêm từng tiêu đề cho mỗi yêu cầu không?

Trả lời

8

Tôi đã tìm thấy câu trả lời!

Về cơ bản tôi cần một trình chặn như bình thường và tôi cần kiểm tra số URL ở đó để biết tôi có nên thêm tiêu đề ủy quyền hay không.

import java.io.IOException; 

import okhttp3.Interceptor; 
import okhttp3.Request; 
import okhttp3.Response; 

/** 
* Created by Omar on 4/17/2017. 
*/ 

public class NetInterceptor implements Interceptor { 
    @Override 
    public Response intercept(Chain chain) throws IOException { 
     Request request = chain.request(); 
     if (request.url().encodedPath().equalsIgnoreCase("/oauth/token") 
       || (request.url().encodedPath().equalsIgnoreCase("/api/v1/users") && request.method().equalsIgnoreCase("post"))) { 
      return chain.proceed(request); 
     } 
     Request newRequest = request.newBuilder() 
       .addHeader("Authorization", "Bearer token-here") 
       .build(); 
     Response response = chain.proceed(newRequest); 
     return response; 
    } 
} 
Các vấn đề liên quan