以下是在 Android 中通过封装公共类来使用okHttpClient.newCall(request).enqueue()
方法,并实现调用时有返回值效果的详细步骤及示例代码:
一、创建网络请求公共类(NetworkUtils.java)
首先创建一个网络请求的公共类,用于封装OkHttpClient
相关的网络请求操作,示例代码如下:
package com.example.okhttpcommonclass;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import java.io.IOException;
import java.util.concurrent.CompletableFuture;
public class NetworkUtils {
private static final OkHttpClient client = new OkHttpClient();
/**
* 发送GET请求的方法
*
* @param url 请求的URL地址
* @return CompletableFuture<String>,可用于获取请求的响应结果(字符串形式)
*/
public static CompletableFuture<String> sendGetRequest(String url) {
CompletableFuture<String> future = new CompletableFuture<>();
Request request = new Request.Builder()
.url(url)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
future.completeExceptionally(e);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()) {
String responseData = response.body().string();
future.complete(responseData);
} else {
future.completeExceptionally(new IOException("请求失败,状态码: " + response.code()));
}
}
});
return future;
}