//依赖
implementation 'com.squareup.okhttp3:logging-interceptor:3.12.0'
implementation 'com.squareup.okhttp3:okhttp:3.12.0'
package com.example.msi.myapplication.okhttoclient;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.logging.HttpLoggingInterceptor;
/**
* 静态内部类单例模式
* OKHttp的重点
* 1:同步和异步的区别
* 2:get和POST怎么使用
* 3:怎么封装
*/
public class OkHttpClients {
private final OkHttpClient okHttpClient;
public OkHttpClients() {
//日志拦截器
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 OkHttpClients getInstance(){
return OkHttpHoulder.utils;
}
static class OkHttpHoulder{
private static final OkHttpClients utils=new OkHttpClients();
}
//封装同步的Get请求方式
public String getSync(String urlStr) throws IOException {
Request request = new Request.Builder().url(urlStr).build();
return okHttpClient.newCall(request).execute().body().string();
}
//同步的Post
public String postAync(String urlStr,String key,String value) throws IOException {
RequestBody body =new FormBody.Builder().add(key,value).build();
Request request = new Request.Builder().url(urlStr).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);
}
}
本文深入讲解OKHttp库的使用方法,包括同步与异步请求、GET与POST请求的实现,以及如何通过日志拦截器进行调试。文章提供了一个静态内部类单例模式的OKHttp客户端实例,演示了如何设置连接、读取和调用超时,并通过回调处理异步响应。

3940

被折叠的 条评论
为什么被折叠?



