मेरे पास यह इंटरसेप्टर है जिसे मैं अपने OkHttp क्लाइंट में जोड़ता हूं:
public class RequestTokenInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
// Here where we'll try to refresh token.
// with an retrofit call
// After we succeed we'll proceed our request
Response response = chain.proceed(request);
return response;
}
}
मैं अपने इंटरसेप्टर में अनुरोध करने के लिए हेडर कैसे जोड़ सकता हूं?
मैंने यह कोशिश की लेकिन मैं गलती कर रहा हूं और नया अनुरोध बनाते समय मैं अपना अनुरोध खो देता हूं:
public class RequestTokenInterceptor implements Interceptor {
@Override
public Response intercept(Interceptor.Chain chain) throws IOException {
Request request = chain.request();
Request newRequest;
try {
Log.d("addHeader", "Before");
String token = TokenProvider.getInstance(mContext).getToken();
newRequest = request.newBuilder()
.addHeader(HeadersContract.HEADER_AUTHONRIZATION, O_AUTH_AUTHENTICATION + token)
.addHeader(HeadersContract.HEADER_CLIENT_ID, CLIENT_ID)
.build();
} catch (Exception e) {
Log.d("addHeader", "Error");
e.printStackTrace();
return chain.proceed(request);
}
Log.d("addHeader", "after");
return chain.proceed(newRequest);
}
}
ध्यान दें कि, मुझे पता है कि इस तरह का अनुरोध करते समय मैं हेडर जोड़ सकता हूं:
Request request = new Request.Builder()
.url("https://api.github.com/repos/square/okhttp/issues")
.header("User-Agent", "OkHttp Headers.java")
.addHeader("Accept", "application/json; q=0.5")
.addHeader("Accept", "application/vnd.github.v3+json")
.build();
लेकिन यह मेरी आवश्यकताओं के अनुरूप नहीं है। मुझे इंटरसेप्टर में इसकी आवश्यकता है।