client = new OkHttpClient.Builder()
.connectTimeout(3000,TimeUnit.MILLISECONDS)
.writeTimeout(3000,TimeUnit.MILLISECONDS)
.readTimeout(3000,TimeUnit.MILLISECONDS)
.addInterceptor(new OKHeaderInterceptor(headers))
.addInterceptor(new OkLogInterceptor())
.build();
//OKHeaderInterceptor
public class OKHeaderInterceptor implements Interceptor {
private Map<String,String> headers;
public OKHeaderInterceptor(Map headers) {
this.headers = headers;
}
@Override
public Response intercept(Chain chain) throws IOException {
Request request=chain.request();
Request.Builder builder=request.newBuilder();
if(headers!=null){
Set set = headers.keySet();
Iterator iterator = set.iterator();
while (iterator.hasNext()){
String next = (String) iterator.next();
builder.addHeader(next,headers.get(next));
}
}
request=builder.build();
return chain.proceed(request);
}
}
OkLogInterceptor
//LogUtil
public class LogUtil {
public static void init(){
FormatStrategy formatStrategy=PrettyFormatStrategy.newBuilder()
.showThreadInfo(false)
.methodCount(0)
.methodOffset(7)
.logStrategy(null)
.build();
Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy));
}
public static void json(String json){
if(!TextUtils.isEmpty(json)){
Logger.json(json);
}
}
public static void json(String tag,String json){
if(!TextUtils.isEmpty(json)){
Logger.t(tag).json(json);
}
}
public static void d(String msg){
if(!TextUtils.isEmpty(msg)){
Logger.d(msg);
}
}
public static void d(String tag,String msg){
if(!TextUtils.isEmpty(msg)){
Logger.t(tag).json(msg);
}
}
public static void e(String msg){
if(!TextUtils.isEmpty(msg)){
Logger.e(msg);
}
}
public static void w(String msg){
if(!TextUtils.isEmpty(msg)){
Logger.e(msg);
}
}
public static void v(String msg){
if(!TextUtils.isEmpty(msg)){
Logger.e(msg);
}
}
public static void i(String msg){
if(!TextUtils.isEmpty(msg)){
Logger.e(msg);
}
}
}
//OkLogInterceptor
public class OkLogInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request request=chain.request();
String method = request.method();
HttpUrl url = request.url();
LogUtil.d("本次请求","url:"+url.toString()+" method:"+method);
Headers headers = request.headers();
Set<String> names = headers.names();
Iterator<String> iterator = names.iterator();
while (iterator.hasNext()){
String next = iterator.next();
String value = headers.get(next);
LogUtil.d(next+":"+value);
}
return chain.proceed(request);
}
}
//初始化(别忘了AndroidManifest.xml中添加name属性)
public class App extends Application {
public static Context context;
@Override
public void onCreate() {
super.onCreate();
context=this;
LogUtil.init();
initHttpHeader();
}
private void initHttpHeader() {
HashMap<String, String> headers = new HashMap<>();
SharedPreferences sharedPreferences = getSharedPreferences(Constant.SP_NAME, MODE_PRIVATE);
headers.put("token",sharedPreferences.getString("token",""));
headers.put("version","version1.0");
headers.put("platform","android");
OkHttp.init(headers);
}
}