Je Singleton
module de poignard pour OkHttp
client et je suis en train d'ajouter tête à l'aide Interceptor
Android 2.0 Rénovation avec l'ajout d'en-têtes intercepteurs ne fonctionne pas
@Provides
@Singleton
OkHttpClient provideOkhttpClient(Cache cache, final LocalData localData) {
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.HEADERS);
OkHttpClient.Builder client = new OkHttpClient.Builder();
client.readTimeout(60, TimeUnit.SECONDS);
client.addInterceptor(logging);
client.addNetworkInterceptor(new Interceptor() {
@Override
public Response intercept(@NonNull Chain chain) throws IOException {
Request original = chain.request();
Request.Builder requestBuilder = original.newBuilder()
.addHeader("Hp-Application", "Android");
Request request = requestBuilder.build();
Response originalResponse = chain.proceed(request);
try {
if (originalResponse.code() == 200) {
localData.setLastUpdateTime(System.currentTimeMillis());
}
} catch (Exception e) {
e.printStackTrace();
}
return originalResponse;
}
});
client.connectTimeout(60, TimeUnit.SECONDS);
client.cache(cache);
return client.build();
}
Mais en regardant les journaux, je ne vois pas en-tête prévu . De plus, je reçois une erreur, car un appel spécifique ne fonctionne pas sans l'en-tête requis.
J'ai essayé aussi d'ajouter avec addInterceptor()/addNetworkInterceptor()
en utilisant différentes classes
public class HeaderInterceptor
implements Interceptor {
@Override
public Response intercept(Chain chain)
throws IOException {
Request request = chain.request();
request = request.newBuilder()
.addHeader("Hp-Application", "Android")
.build();
return chain.proceed(request);
}
}
Mais cette façon n'a pas fonctionné pour moi aussi.
Comment puis-je ajouter cet en-tête à chaque appel d'application ayant une seule implémentation?
existe-t-il une documentation ou des notes de mise à jour dans laquelle ceci est mentionné, cela serait utile s'il vous plaît mettre à jour si possible –