2017-04-17 8 views
5

मुझे पता है कि OkHttpClient के माध्यम से सभी अनुरोधों में एक इंटरसेप्टर जोड़ना संभव है, लेकिन मैं जानना चाहता हूं कि Okhttp में OkHttpClient का उपयोग करके एक अनुरोध या दो को छोड़कर सभी अनुरोधों में शीर्षलेख जोड़ना संभव है या नहीं।एक या दो को छोड़कर सभी एपीआई अनुरोधों में इंटरसेप्टर कैसे जोड़ें?

उदाहरण के लिए, मेरी एपीआई में सभी अनुरोधों को एक वाहक टोकन (Authorization: Bearer token-here हेडर) oauth/token (एक उपयोगकर्ता रजिस्टर करने के लिए) और api/users (एक टोकन प्राप्त करने) मार्गों के अलावा आवश्यकता होती है। क्या एक अनुरोध में OkHttpClient का उपयोग करके बहिष्कृत लोगों को छोड़कर सभी अनुरोधों के लिए एक इंटरसेप्टर जोड़ना संभव है या क्या मुझे प्रत्येक अनुरोध के लिए हेडर अलग-अलग जोड़ना चाहिए?

उत्तर

8

मुझे जवाब मिला!

असल में मुझे सामान्य रूप से एक इंटरसेप्टर की आवश्यकता होती है और मुझे यह जानने के लिए यूआरएल जांचने की आवश्यकता है कि मुझे प्राधिकरण शीर्षलेख जोड़ना चाहिए या नहीं।

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; 
    } 
} 
संबंधित मुद्दे