OkHttp工具类+日志拦截

日志拦截器加依赖: implementation ‘com.squareup.okhttp3:logging-interceptor:3.12.0’
异步get
public class OkUtils {

//初始化一个对象
private OkHttpClient okHttpClient;
//2.定义一个方法
private OkUtils() {

HttpLoggingInterceptor loggingInterceptor =new HttpLoggingInterceptor();
    okHttpClient = new OkHttpClient.Builder()
            .connectTimeout(20,TimeUnit.SECONDS)
            .callTimeout(20,TimeUnit.SECONDS)
            .readTimeout(20,TimeUnit.SECONDS)
            .addInterceptor(loggingInterceptor)
            .build();
    }

public static OkUtils getInstance() {
    return OkHolder.okUtils;
}
//静态私有方法
private static class OkHolder {
    private static final OkUtils okUtils = new OkUtils();
}


 //封装异步的Get
public void getAsync(String url, Callback callback) {
    Request request = new Request.Builder().url(url).build();
    okHttpClient.newCall(request).enqueue(callback);
}

}

同步get
public class OkHttpUtils {

  private OkHttpClient mOkHttpClient;

private OkHttpUtils() {
    mOkHttpClient = new OkHttpClient();
}

public static OkHttpUtils getInstance() {
    return OkHttpHolder.utils;
}

static class OkHttpHolder {
    private static final OkHttpUtils utils = new OkHttpUtils();
}


//封装同步的Get请求方式
public String get(String url) throws IOException {
    Request request = new Request.Builder().url(url).build();
    Response execute = mOkHttpClient.newCall(request).execute();
    return execute.body().string();
}

}

//总
public class OkUtils {

private OkHttpClient okHttpClient;

private OkUtils() {
    //日志拦截器
    HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
    okHttpClient = new OkHttpClient.Builder()
            .connectTimeout(20, TimeUnit.SECONDS)
            .readTimeout(20, TimeUnit.SECONDS)
            .callTimeout(20, TimeUnit.SECONDS)
            .addInterceptor(loggingInterceptor)
            .build();
}

public static OkUtils getInstance() {
    return OkHolder.okUtils;
}

static class OkHolder {
    private static final OkUtils okUtils = new OkUtils();
}

//这是同步的get和post
public String getSync(String url) throws IOException {
    Request request = new Request.Builder().url(url).build();
    return okHttpClient.newCall(request).execute().body().string();
}

public String postSync(String url, String key, String value) throws IOException {
    RequestBody body = new FormBody.Builder().add(key, value).build();
    Request request = new Request.Builder().url(url).post(body).build();
    return okHttpClient.newCall(request).execute().body().string();
}

//异步的get和post

public void getAsync(String url, Callback callback) {
    Request request = new Request.Builder().url(url).build();
    okHttpClient.newCall(request).enqueue(callback);
}

public void postAsync(String url, Callback callback) {
    RequestBody body = new FormBody.Builder().add("key", "value").build();
    Request request = new Request.Builder().url(url).post(body).build();
    okHttpClient.newCall(request).enqueue(callback);
}

//上传图片  必须是POST
public void upLoadImage(String url, String uid, Callback callback) {
    File file = new File(Environment.getExternalStorageDirectory() + "/Pictures/test.jpg");
    //上传图片需要 MultipartBody
    MultipartBody.Builder body = new MultipartBody.Builder().setType(MultipartBody.FORM)
            .addFormDataPart("uid", uid)
            .addFormDataPart("file", "test.jpg", RequestBody.create(MediaType.parse("image/jpg"), file));
    RequestBody body1 = body.build();
    Request request = new Request.Builder().url(url).post(body1).build();
    okHttpClient.newCall(request).enqueue(callback);
}

}

猜你喜欢

转载自blog.csdn.net/qq_43603325/article/details/85038647