OKHttp 添加头信息

5
final SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext);
            final OkHttpClient okHttpClient = new OkHttpClient.Builder()
                    .addInterceptor(new Interceptor() {
                        @Override
                        public okhttp3.Response intercept(Interceptor.Chain chain) throws IOException {
                            Request.Builder ongoing = chain.request().newBuilder();
                            ongoing.addHeader("Cache-Control", "no-cache");
                            ongoing.addHeader("User-Agent", System.getProperty("http.agent"));
                            ongoing.addHeader("authorization", sharedPreferences.getString("api_key",""));
                            return chain.proceed(ongoing.build());
                        }
                    })
                    .build();
            new Picasso.Builder(mContext).downloader(new OkHttp3Downloader(okHttpClient)).build().with(mContext).load(event.getPictureUrl()).into(holder.eventimage);

我正在使用 com.squareup.picasso:picasso:2.5.2com.jakewharton.picasso:picasso2-okhttp3-downloader:1.1.0com.squareup.okhttp3:okhttp:3.4.1,但它没有在头部发送任何内容。如何解决这个问题?一旦我添加了这个代码 Picasso.setSingletonInstance(picasso); 然后稍后再使用 Picasso 就可以正常工作了。

请查看我的回答。如果仍然无法工作,请使用日志打印进行验证,可能是您没有获得授权密钥和用户代理。 - Andy Developer
可能是你传递了空的拦截器。 - Andy Developer
1个回答

7
尝试这个。
Request getRequest = chain.request();
Request.Builder requestBuilder = getRequest.newBuilder()
    .addHeader("Cache-Control", "no-cache")
    .addHeader("User-Agent", System.getProperty("http.agent"))
    .addHeader("authorization", sharedPreferences.getString("api_key",""));
Request request = requestBuilder.build();
return chain.proceed(request);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接