万网网站如何建设,成都网站建设联系电话,深圳外贸网站推广公司,网站建设短信下面是一个用 OkHttp 封装的 GET 请求方法#xff0c;适用于 Android 项目。该方法包括基本的网络请求、错误处理#xff0c;并支持通过回调返回结果。 封装 GET 请求的工具类
添加依赖 在你的 build.gradle 文件中#xff0c;确保添加了 OkHttp 的依赖#xff1a;
imple…下面是一个用 OkHttp 封装的 GET 请求方法适用于 Android 项目。该方法包括基本的网络请求、错误处理并支持通过回调返回结果。 封装 GET 请求的工具类
添加依赖 在你的 build.gradle 文件中确保添加了 OkHttp 的依赖
implementation com.squareup.okhttp3:okhttp:4.11.0
工具类代码 创建一个工具类 HttpUtil封装 GET 请求。
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;import java.io.IOException;public class HttpUtil {private static final OkHttpClient client new OkHttpClient();/*** 封装的 GET 请求方法* param url 请求的 URL 地址* param callback 回调接口用于处理结果*/public static void sendGetRequest(String url, HttpCallback callback) {// 构建请求Request request new Request.Builder().url(url).get().build();// 发起请求client.newCall(request).enqueue(new Callback() {Overridepublic void onFailure(Call call, IOException e) {// 请求失败if (callback ! null) {callback.onFailure(e);}}Overridepublic void onResponse(Call call, Response response) throws IOException {if (callback ! null) {if (response.isSuccessful()) {// 请求成功callback.onSuccess(response.body().string());} else {// 请求失败HTTP 状态码非 2xxcallback.onFailure(new IOException(Unexpected code response.code()));}}}});}/*** 回调接口用于处理 HTTP 请求的结果*/public interface HttpCallback {void onSuccess(String responseBody);void onFailure(Exception e);}
}
使用示例 在 Activity 或其他地方调用 sendGetRequest 方法
import android.os.Bundle;
import android.util.Log;import androidx.appcompat.app.AppCompatActivity;public class MainActivity extends AppCompatActivity {private static final String TAG MainActivity;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 示例 GET 请求String url https://jsonplaceholder.typicode.com/posts;HttpUtil.sendGetRequest(url, new HttpUtil.HttpCallback() {Overridepublic void onSuccess(String responseBody) {// 请求成功处理响应Log.d(TAG, Response: responseBody);}Overridepublic void onFailure(Exception e) {// 请求失败处理错误Log.e(TAG, Error: e.getMessage(), e);}});}
}
说明 回调接口HttpCallback 用于处理异步请求的结果分别有 onSuccess 和 onFailure 方法。 异步操作OkHttp 的 enqueue 方法在后台线程中运行因此无需担心主线程阻塞。 错误处理在 onFailure 中返回异常信息方便排查问题。
没有参数的 GET 请求如果你不需要传递参数只需发送一个简单的 GET 请求即可
// URL 不带参数
String url https://jsonplaceholder.typicode.com/posts;HttpUtil.sendGetRequest(url, new HttpUtil.HttpCallback() {Overridepublic void onSuccess(String responseBody) {// 请求成功处理响应Log.d(TAG, Response: responseBody);}Overridepublic void onFailure(Exception e) {// 请求失败处理错误Log.e(TAG, Error: e.getMessage(), e);}
});
带参数的 GET 请求 如果你需要在 URL 中传递查询参数可以通过 HttpUrl 或直接将参数拼接到 URL 字符串中。
方法一手动拼接查询参数
// 带查询参数的 URL
String baseUrl https://jsonplaceholder.typicode.com/posts;
String userId 1; // 假设你要传递一个 userId 参数
String url baseUrl ?userId userId; // 拼接查询参数HttpUtil.sendGetRequest(url, new HttpUtil.HttpCallback() {Overridepublic void onSuccess(String responseBody) {// 请求成功处理响应Log.d(TAG, Response: responseBody);}Overridepublic void onFailure(Exception e) {// 请求失败处理错误Log.e(TAG, Error: e.getMessage(), e);}
});
方法二使用 HttpUrl 进行参数编码 HttpUrl 可以帮助你更安全地构建带有查询参数的 URL自动处理参数编码
HttpUrl url HttpUrl.parse(https://jsonplaceholder.typicode.com/posts).newBuilder().addQueryParameter(userId, 1).addQueryParameter(id, 2) // 添加多个查询参数.build();HttpUtil.sendGetRequest(url.toString(), new HttpUtil.HttpCallback() {Overridepublic void onSuccess(String responseBody) {// 请求成功处理响应Log.d(TAG, Response: responseBody);}Overridepublic void onFailure(Exception e) {// 请求失败处理错误Log.e(TAG, Error: e.getMessage(), e);}
});
数据解析 GsonFormat的使用