OkHttpClient.Builder builder=new OkHttpClient.Builder();
该拦截器必须在添加token拦截器后添加
log拦截器
HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
token拦截器
Interceptor token = new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request request= chain.request().newBuilder().header("token","1705b").build();
return chain.proceed(request);
}
};
添加并实例化
builder.addInterceptor(token);
builder.readTimeout(5, TimeUnit.SECONDS).addInterceptor(httpLoggingInterceptor);
okHttpClient=builder.build();
设置为单例
private static Okhttputils okhttputils=null;
public static Okhttputils getInstance(){
if(okhttputils==null){
synchronized (StringBuilder.class){
if(okhttputils==null){
okhttputils=new Okhttputils();
}
}
}
return okhttputils;
}
get请求数据
public void doget(String url, final OkhttpListener okhttpListener){
Request.Builder builder = new Request.Builder();
builder.url(url);
builder.get();
Request build = builder.build();
Call call = okHttpClient.newCall(build);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
okhttpListener.onError(e.getMessage());
}
@Override
public void onResponse(Call call, Response response) throws IOException {
okhttpListener.onSuccess(response.body().string());
}
});
}
post请求
public void dopost(String url, String[] keys,String[] values, final OkhttpListener listener){
Request.Builder builder = new Request.Builder();
builder.url(url);
FormBody.Builder builder1 = new FormBody.Builder();
//…
for (int i = 0; i < keys.length; i++) {
builder1.add(keys[i],values[i]);
}
FormBody formBody = builder1.build();
builder.post(formBody);
Request request = builder.build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
listener.onError(e.getMessage());
}
@Override
public void onResponse(Call call, Response response) throws IOException {
listener.onSuccess(response.body().string());
}
});
}
注意!!post用如下方法存放post拼接的请求体
FormBody.Builder builder1 = new FormBody.Builder();
//....
for (int i = 0; i < keys.length; i++) {
builder1.add(keys[i],values[i]);
}
FormBody formBody = builder1.build();
builder.post(formBody);