关于okhttp拦截器添加公共参数和response读取后不能返回的解决办法
Request originalRequest = chain.request(); Request request = null; Mapmap = new HashMap<>(); String method = originalRequest.method();//获取请求方法 if(method.equals("GET")){//添加参数 HttpUrl modifiedUrl = originalRequest.url().newBuilder() .addQueryParameter("channel", CHANNEL) .addQueryParameter("sign", sign) .build(); request = originalRequest.newBuilder().url(modifiedUrl).build();//构建request Response response = chain.proceed(request);//进行网络请求并获得返回结果 String content = response.body().string();//拿到返回结果,进行分析 MediaType mediaType = response.body().contentType();//获取返回结果的tupe return response.newBuilder()//生成新的response返回,网络请求的response如果取出之后,直接返回将会抛出异常 .body(ResponseBody.create(mediaType, content)) .build(); }else if(method.equals("POST")){ if (originalRequest.body() instanceof FormBody) { FormBody.Builder bodyBuilder = new FormBody.Builder(); FormBody formBody = (FormBody) originalRequest.body(); formBody = bodyBuilder //POST方法添加参数 .add("channel", CHANNEL) .add("sign", sign) .build(); request = originalRequest.newBuilder().post(formBody).build(); Response response = chain.proceed(request); String content = response.body().string(); MediaType mediaType = response.body().contentType(); return response.newBuilder() .body(ResponseBody.create(mediaType, content)) .build(); } } } return chain.proceed(originalRequest);