Android OKHTTP封装与JSON解析实战示例

1 下载量 166 浏览量 更新于2024-08-30 收藏 60KB PDF 举报
在Android开发中,使用OkHttp库处理网络请求是一种常见的做法,因为它提供了高效且易于使用的HTTP客户端API。本文将详细介绍如何通过创建HttpUtil类并结合OkHttp来发送GET请求,获取JSON数据,并解析返回的数据。 首先,为了代码重用,我们创建了一个名为HttpUtil的工具类,它封装了发送HTTP请求的基本逻辑。在HttpUtil.java文件中,定义了如下的sendOkHttpRequest静态方法: ```java public static void sendOkHttpRequest(String address, okhttp3.Callback callback) { OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(address) // 设置请求的URL .build(); // 创建请求对象 // 使用OkHttpClient发起异步请求 client.newCall(request).enqueue(callback); // 将请求加入到线程队列中,当服务器响应时回调给指定的Callback } ``` 这段代码的核心在于OkHttpClient的使用,OkHttpClient是一个线程安全的HTTP客户端,可以配置超时、缓存等参数。Request.Builder用于构建请求对象,通过设置URL后,调用`build()`方法将其转换为具体的Request对象。 接下来,为了处理从服务器返回的JSON数据,我们需要定义一个实体类App,通常这种类对应数据库表中的一个实体或API接口返回的数据结构。例如,App.java文件中定义了如下属性和getter/setter方法: ```java public class App { private String other; private String u_Name; private String u_id; private String u_passWord; private String u_token; private String u_userName; // getter和setter方法 public String getOther() { return other; } public void setOther(String other) { this.other = other; } public String getU_Name() { return u_Name; } public void setU_Name(String u_Name) { this.u_Name = u_Name; } public String getU_id() { return u_id; } public void setU_id(String u_id) { this.u_id = u_id; } public String getU_passWord() { return u_passWord; } public void setU_passWord(String u_passWord) { this.u_passWord = u_passWord; } // ...其他getter和setter方法 } ``` 在实际操作中,发送请求后,你需要在Callback接口的onResponse方法中解析JSON数据。OkHttp的ResponseBody可以转化为JSON对象,然后通过Gson或者其他JSON库将其转换为App对象。以下是一个简化版的示例,展示了如何在Callback中处理JSON数据: ```java public class NetworkCallback implements okhttp3.Callback { @Override public void onFailure(Call call, IOException e) { // 处理请求失败 } @Override public void onResponse(Call call, Response response) throws IOException { if (!response.isSuccessful()) { throw new IOException("Unexpected code " + response); } // 将响应体转换为JSON字符串 String jsonString = response.body().string(); // 使用Gson将JSON字符串解析为App对象 App app = new Gson().fromJson(jsonString, App.class); // 更新UI或者存储数据,使用app对象 // ... } } ``` 最后,调用HttpUtil类的sendOkHttpRequest方法,传入地址和自定义的NetworkCallback,这样当请求成功时,App对象就会被填充了从服务器获取的JSON数据。 总结来说,本篇代码演示了如何在Android应用中利用OkHttp发送GET请求,接收并解析JSON数据,以及如何将解析后的数据与实体类关联。这是一项基本的网络通信和数据解析技能,在Android开发中非常实用。