給OkHttpClient添加統(tǒng)一的參數(shù)

添加統(tǒng)一的請求參數(shù)、請求頭 :是通過攔截器來完成的:

攔截器:

 private Interceptor netCacheInterceptor = new Interceptor() {
        @Override
        public Response intercept(Chain chain) throws IOException {
            Request request = chain.request();
            HttpUrl httpUrl = request.url()
                    .newBuilder()
                    // add common parameter
                    .addQueryParameter("token", "123")
                    .addQueryParameter("username", "xiaocai")
                    .build();
            Request build = request.newBuilder()
                    // add common header
                    .addHeader("contentType", "text/json")
                    .url(httpUrl)
                    .build();
            Response response = chain.proceed(build);
            return response;
        }
    };

Request:是一個builder模式,執(zhí)行的是product的角色。而其中的builder承擔(dān)著builder、concreteBuilder、director的角色。
chain是okhttp的網(wǎng)絡(luò)請求者,可以獲取request以及發(fā)起請求process

okhttp添加攔截器:


    private void initOkHttpClient() {
        OkHttpClient.Builder builder = new OkHttpClient.Builder();
        if (ApiClient.DEBUG) {
            // Log信息攔截器
            HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
            loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
            //設(shè)置 Debug Log 模式
            builder.addNetworkInterceptor(loggingInterceptor);
        }
        //設(shè)置超時
        builder.connectTimeout(15, TimeUnit.SECONDS);
        builder.readTimeout(20, TimeUnit.SECONDS);
        builder.writeTimeout(20, TimeUnit.SECONDS);
        //錯誤重連
        builder.retryOnConnectionFailure(true);
        // commen parameter
        builder.addInterceptor(netCacheInterceptor);
        mOkHttpClient = builder.build();
    }

服務(wù)器代碼:

  @Override
   protected void doPost(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {
       Enumeration<String> parameterNames = request.getParameterNames();
       while(parameterNames.hasMoreElements()){
           String nextElement = parameterNames.nextElement();
           String value = request.getParameter(nextElement);
           System.out.println("nextElement:"+nextElement+" value:"+value);
       }
       
       Enumeration<String> headerNames = request.getHeaderNames();
       while(headerNames .hasMoreElements()){
           String nextElement = headerNames.nextElement();
           String header = request.getHeader(nextElement);
           System.out.println("key:"+nextElement+" value:"+header);
       }
       
   }

服務(wù)器得到的結(jié)果:

nextElement:username value:xiaocai
nextElement:token value:123
nextElement:loginPassword value:1
nextElement:mobile value:1
key:contenttype value:text/json
key:content-type value:application/x-www-form-urlencoded
key:content-length value:62
key:host value:10.0.2.2:8080
key:connection value:Keep-Alive
key:accept-encoding value:gzip
key:user-agent value:okhttp/3.6.0
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容