Retrofit2.0+OkHttp設置統一的請求頭(request headers)


有時候要求Retrofit2的接口中每個都要增加上headers,又不想做重復的事情,可以使用這種方法來為每個request請求都設置上相同的請求頭header。

修改請求頭request headers主要是通過攔截器來實現,下面是我自己根據需要設置的。如果還有增加其他的header,可以再進行增加。

 /**
     * 請求攔截器,修改請求header
     */
    private class RequestInterceptor implements Interceptor{

        @Override
        public Response intercept(Chain chain) throws IOException {
            Request request = chain.request()
                    .newBuilder()
                    .addHeader("Content-Type", "text/html; charset=UTF-8")
//                    .addHeader("Accept-Encoding", "*")
                    .addHeader("Connection", "keep-alive")
                    .addHeader("Accept", "*/*")
                    .addHeader("Access-Control-Allow-Origin", "*")
                    .addHeader("Access-Control-Allow-Headers", "X-Requested-With")
                    .addHeader("Vary", "Accept-Encoding")
//                    .addHeader("Cookie", "add cookies here")
                    .build();

            Log.v("zcb", "request:" + request.toString());
            Log.v("zcb", "request headers:" + request.headers().toString());

            return chain.proceed(request);
        }
    }

使用方法:

    private OkHttpClient getOkHttpClient() {
        //定制OkHttp
        OkHttpClient.Builder httpClientBuilder = new OkHttpClient
                .Builder();
        //設置超時時間
        httpClientBuilder.connectTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS);
        httpClientBuilder.writeTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS);
        httpClientBuilder.readTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS);
        //使用攔截器
        httpClientBuilder.addInterceptor(new RequestInterceptor());
        httpClientBuilder.addInterceptor(new LogInterceptor());
        
        return httpClientBuilder.build();
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM