学习笔记
一、依赖和权限的添加
-
网络权限:
在 Android 中进行网络请求时,必须声明权限,确保应用具有访问互联网的能力。
<uses-permission android:name="android.permission.INTERNET"/>
依赖项:
确保在 build.gradle
中添加以下依赖:
dependencies {
implementation 'com.squareup.okhttp3:okhttp:4.9.3'//OkHttp的依赖
implementation 'com.google.code.gson:gson:2.8.9' // Gson依赖
}
二、创建与 JSON 结构匹配的 POJO 类
根据你的 JSON 数据结构创建 Java 类(POJO 类),用于 GSON 解析:
{
"reason": "success",
"result": {
"curpage": 1,
"allnum": 3,
"newslist": [
{
"id": "ea5caaa3dc77b80916f4e1d00367b52a",
"ctime": "2024-11-22 10:11",
"title": "Example News",
"description": "",
"source": "News Source",
"picUrl": "",
"url": "https://example.com"
}
]
},
"error_code": 0
}
创建 POJO 类
public class XinWenPhoto {
private String reason;
private Result result;
private int errorCode;
// Getter 方法
..................//省略get方法,可选toSing()方法
public static class Result {
private int curpage;
private int allnum;
private List<NewsItem> newslist;
// Getter 方法
..................//省略get方法,可选toSing()方法
public List<NewsItem> getNewslist() {
return newslist;
}
}
public static class NewsItem {
private String id;
private String ctime;
private String title;
private String description;
private String source;
private String picUrl;
private String url;
// Getter 方法
..................//省略get方法,可选toSing()方法
}
}
三、创建网络请求方法
使用 OkHttp 发起 HTTP 请求并利用 Gson 解析响应数据。
public class ApiClient {
private static final String API_URL = "http://apis.juhe.cn/fapigx/internet_news/query";
private static final String API_KEY = "your_api_key_here"; // 替换为实际的 API Key
// 获取新闻数据的 API 请求方法
public static void fetchNewsData(String keyword, final NewsCallback callback) {
String url = API_URL + "?key=" + API_KEY + "&num=3&word=" + keyword;
// 创建 OkHttpClient 实例
OkHttpClient client = new OkHttpClient();
// 创建请求对象
Request request = new Request.Builder()
.url(url) // 设置请求 URL
.get() // 使用 GET 方法
.build();
// 发送请求并异步处理回调(enqueue)
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
callback.onFailure(e.getMessage()); // 请求失败时的回调
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()) {
// 获取响应的 JSON 字符串
String jsonResponse = response.body().string();
// 使用 Gson 解析 JSON 字符串为 ApiResponse 对象
Gson gson = new Gson();
ApiResponse apiResponse = gson.fromJson(jsonResponse, ApiResponse.class);
// 请求成功,调用回调方法传