OkHttp 应该怎么封装网络工具类
时间: 2023-09-18 16:15:56 浏览: 131
OkHttp 是一款非常优秀的网络请求框架,可以用来实现 Android 应用中的网络请求。如果要封装一个网络工具类,可以考虑以下几个步骤:
1. 引入 OkHttp 库。可以通过在 build.gradle 文件中添加以下依赖来引入 OkHttp 库:
```
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
```
2. 创建一个单例类来管理 OkHttp。在这个类中,我们可以创建一个 OkHttpClient 对象,用于发送网络请求。同时,可以在这个类中定义一些公共的请求参数、头部信息等,以便在发送网络请求时使用。
```java
public class HttpUtils {
private static HttpUtils mInstance;
private OkHttpClient mOkHttpClient;
private HttpUtils() {
mOkHttpClient = new OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS)
.readTimeout(10, TimeUnit.SECONDS)
.writeTimeout(10, TimeUnit.SECONDS)
.build();
}
public static HttpUtils getInstance() {
if (mInstance == null) {
synchronized (HttpUtils.class) {
if (mInstance == null) {
mInstance = new HttpUtils();
}
}
}
return mInstance;
}
public OkHttpClient getOkHttpClient() {
return mOkHttpClient;
}
}
```
3. 封装网络请求。在发送网络请求时,我们可以使用 OkHttp 提供的 Request 和 Response 类来实现。可以考虑封装一个方法,传入请求参数和回调函数,来发送网络请求,并将结果返回给回调函数。
```java
public void sendRequest(Request request, Callback callback) {
mOkHttpClient.newCall(request).enqueue(callback);
}
```
4. 在回调函数中处理请求结果。在发送网络请求时,我们可以通过传入回调函数的方式,来处理请求结果。在回调函数中,可以根据请求结果的状态码、响应体等信息,来处理请求结果。
```java
public abstract class HttpCallback implements Callback {
@Override
public void onFailure(Call call, IOException e) {
// 网络请求失败
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()) {
// 网络请求成功,处理响应结果
String result = response.body().string();
onSuccess(result);
} else {
// 网络请求失败
onFailure(response.code(), response.message());
}
}
public abstract void onSuccess(String result);
public abstract void onFailure(int code, String message);
}
```
5. 封装常用的网络请求方法。根据业务需求,可以封装一些常用的网络请求方法,例如 GET、POST 等请求方法,以便在发送网络请求时使用。
```java
public void doGet(String url, HttpCallback callback) {
Request request = new Request.Builder().url(url).build();
sendRequest(request, callback);
}
public void doPost(String url, RequestBody body, HttpCallback callback) {
Request request = new Request.Builder().url(url).post(body).build();
sendRequest(request, callback);
}
```
通过以上步骤,我们可以封装一个简单的 OkHttp 网络工具类,用于发送网络请求。当然,具体的实现还需要根据业务需求进行调整和优化,以上仅供参考。
阅读全文