android - 如何使用改造从所有响应中获取 header

标签 android retrofit okhttp retrofit2

我正在使用 Retrofit 库版本 2 和 OkHttpClient

我想从所有响应中获取一些标题。

我用 OkClient 找到了一个解决方案:

    public class InterceptingOkClient extends OkClient{
    public InterceptingOkClient()
    {
    }

    public InterceptingOkClient(OkHttpClient client)
    {
        super(client);
    }

    @Override
    public Response execute(Request request) throws IOException
    {
        Response response = super.execute(request);

        for (Header header : response.getHeaders())
        {
            // do something with header
        }

        return response;
    }
}

但是,如果我使用 OkHttpClient,我该怎么做呢?

最佳答案

是的,这是一个老问题..但仍然找到答案,因为我自己也在寻找类似的问题。

okHttpClient.interceptors().add(new Interceptor() {  
    @Override
    public Response intercept(Interceptor.Chain chain) throws IOException {
        Request original = chain.request();

        // Request customization: add request headers
        Request.Builder requestBuilder = original.newBuilder()
                .header("Authorization", "auth-value"); // <-- this is the important line, to add new header - replaces value with same header name.

        Request request = requestBuilder.build();
        Response response = chain.proceed(request);
        Headers allHeaders = response.headers();
        String headerValue = allHeaders.get("headerName");
        return response;
    }
});

希望这对您有所帮助!

P.S:没有处理错误。

关于android - 如何使用改造从所有响应中获取 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34389723/

相关文章:

Android将base64编码的字符串转换为 ImageView

java - 警报管理器未触发服务

android - 在 Android 上重用部分可绘制对象

android - RxJava 和 Retrofit 处理多个平面图的分页

android - 来自 HttpURLConnection 的 OkHttpClient 连接泄漏警告

Android:是否可以用数字更新 ImageView/ImageButton 以显示新消息的数量?

java - 将参数发送到订阅 CompositeDisposable 的方法 - Android?

java - 如何在Retrofit 2.0+中正确设置注释和查询?

java - Android OkHttp 库 : GET Request - Exception EOFException:\n not found: size=0 content=

java - 如何在请求中使用 OkHttp Http Url?