Android网络请求系列类封装:用OkHttp打造高效单例请求工具
当然可以!以下是一个简单的Android网络请求封装类,使用`OkHttp`作为HTTP客户端库。请确保在你的`build.gradle`文件中添加OkHttp的依赖: ```groovy implementation 'com.squareup.okhttp3:okhttp:4.9.3' ``` 接下来,我们创建一个名为`NetworkClient`的类来处理网络请求。 ```java import okhttp3.Call; import okhttp3.Callback; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import java.io.IOException; public class NetworkClient { private static NetworkClient instance; private OkHttpClient client; // 单例模式 private NetworkClient() { client = new OkHttpClient(); } public static NetworkClient getInstance() { if (instance == null) { instance = new NetworkClient(); } return instance; } // GET请求 public void get(String url, final NetworkCallback callback) { Request request = new Request.Builder() .url(url) .build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { callback.onError(e); } @Override public void onResponse(Call call, Response response) throws IOException { if (response.isSuccessful() && response.body() != null) { callback.onSuccess(response.body().string()); } else { callback.onError(new IOException("Unexpected code " + response)); } } }); } // POST请求 public void post(String url, String json, final NetworkCallback callback) { // Create request body, omitted for brevity // You can use MediaType and RequestBody to send JSON } // 网络请求回调接口 public interface NetworkCallback { void onSuccess(String response); void onError(Exception e); } } ``` 使用方法: 可以通过以下方式使用这个`NetworkClient`类: ```java String url = "https://api.example.com/data"; NetworkClient.getInstance().get(url, new NetworkClient.NetworkCallback() { @Override public void onSuccess(String response) { // 处理成功的响应 System.out.println("Response: " + response); } @Override public void onError(Exception e) { // 处理错误 e.printStackTrace(); } }); ``` 说明: 1. `NetworkClient`是一个单例类,确保全局只有一个网络请求实例。 2. `get`和`post`方法用于发送GET和POST请求。 3. `NetworkCallback`接口用于处理请求结果,包括成功和错误情况。 你也可以根据需求扩展更多功能,比如添加请求头、处理HTTPS等。 ######[AI写代码神器 | 1776点数解答 | 2024-08-28 09:56:55]
- RealtimeMonitoringFragment 代码片段:Android 实时监控功能核心代码剖析(字节豆包 | 30点数解答 | 2024-10-12 10:31:18)310
- 揭秘:Android实时监控片段(RealTimeMonitoringFragment)代码实现(GPT | 531点数解答 | 2024-10-12 10:32:25)284
- AIDE编写Xposed软件:参考代码教你拦截Smail类方法名(阿里通义 | 649点数解答 | 2024-10-12 00:15:48)317
- 易语言实现高并发 HTTP 操作:多线程、线程池与异步操作实战(字节豆包 | 849点数解答 | 2025-06-03 23:17:33)285
- Android开发必备:Android Lint工具全面解析,助你提升应用质量!(百度文心 | 259点数解答 | 2023-11-09 17:33:53)246
- Android Studio开发:打造多页面交互美团选购App,附代码示例与注意要点! (字节豆包 | 293点数解答 | 2024-11-29 01:16:56)314
- Android Studio 开发:功能完备且流畅运行的美团选购 APP 大揭秘!(GPT | 291点数解答 | 2024-11-29 01:17:30)239
- Android开发神器OkHttp:超快速、安全、简单又灵活!附GET请求示例(阿里通义 | 357点数解答 | 2023-11-07 22:48:04)181
- 巴黎奥运:中国女排淘汰赛对决土耳其,朱婷成致胜关键!(字节豆包 | 448点数解答 | 2024-08-06 15:59:48)178
- Python 实现 DES 加密算法编程实验:从原理到单步调试全解析(字节豆包 | 4096点数解答 | 2025-11-09 22:06:30)88
- 智能电话窗口按钮1弹起:获取坐标与手机IMEI码待处理(GPT | 208点数解答 | 2024-09-12 16:36:31)363
- PHP代码:循环检测域名状态,借助HTTP请求与CURL实现(GPT | 947点数解答 | 2024-10-27 11:56:50)272