【Android】使用Retrofit2发送异步网络请求的简单案例

news/2025/2/14 5:51:10/

添加网络权限到AndroidManifest.xml清单文件

为了让你的Android应用程序能够使用互联网进行通信,你需要在AndroidManifest.xml文件中添加网络权限声明。<uses-permission android:name="android.permission.INTERNET"/> 这个权限应该添加到 AndroidManifest.xml 文件中的 <manifest> 标签内部。

下面是一个示例 AndroidManifest.xml 文件的片段,展示了 <uses-permission> 标签的位置:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.myapp"><uses-permission android:name="android.permission.INTERNET"/><application...>...</application>
</manifest>

请确保将 <uses-permission> 标签放置在 <application> 标签的外面,但在 <application> 标签之内。这样可以确保权限声明在应用程序的范围内生效,而不是仅在某个活动或服务中生效。

在添加 <uses-permission> 标签后,你的应用程序将被授予使用互联网的权限。这是必要的,如果你的应用程序需要与网络进行通信,例如通过网络请求获取数据或与远程服务器进行交互。

添加retrofit和converter-gson依赖库

build.gradle.kts文件的dependencies部分添加以下两行依赖:

implementation("com.squareup.retrofit2:retrofit:2.5.0")
implementation("com.squareup.retrofit2:converter-gson:2.0.2")

完整的dependencies部分示例:

dependencies {implementation("com.squareup.retrofit2:retrofit:2.5.0")implementation("com.squareup.retrofit2:converter-gson:2.0.2")implementation("androidx.appcompat:appcompat:1.6.1")implementation("com.google.android.material:material:1.8.0")implementation("androidx.constraintlayout:constraintlayout:2.1.4")testImplementation("junit:junit:4.13.2")androidTestImplementation("androidx.test.ext:junit:1.1.5")androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
}

同步Gradle

在添加依赖库后,记得点击Android Studio工具栏中的“Sync Project with Gradle Files”按钮,以确保Gradle文件同步。

创建接收服务器返回数据的类

下面是一个名为Result的示例类,用于接收服务器返回的数据:

public class Result<T> {private Integer code;private String msg;private T data;public Integer getCode() {return code;}public void setCode(Integer code) {this.code = code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public T getData() {return data;}public void setData(T data) {this.data = data;}
}

创建用于描述网络接口的类

下面是一个名为Api的示例接口类,用于描述网络请求的接口:

public interface Api {@GET("api/user/{id}")Call<Result<User>> getById(@Path("id") Integer id);
}

创建Retrofit实例

MainActivity类中创建Retrofit实例,如下所示:

Retrofit retrofit = new Retrofit.Builder().baseUrl(baseUrl).addConverterFactory(GsonConverterFactory.create()).build();

请注意,上述代码中的baseUrl应该是你要请求的API的基本URL。

创建网络请求接口实例

MainActivity类中创建网络请求接口的实例,如下所示:

Api api = retrofit.create(Api.class);

创建并发送异步网络请求

MainActivity类中发送异步网络请求,如下所示:

Call<Result<User>> call = api.getById(2);call.enqueue(new Callback<Result<User>>() {@Overridepublic void onResponse(Call<Result<User>> call, Response<Result<User>> response) {Result<User> body = response.body();if(body == null) {return;}User user = response.body().getData();if(user == null) {return;}Toast.makeText(MainActivity.this, "请求成功:" + user.getUsername(), Toast.LENGTH_LONG).show();}@Overridepublic void onFailure(Call<Result<User>> call, Throwable t) {Toast.makeText(MainActivity.this, "请求失败", Toast.LENGTH_LONG).show();}
});

上述代码中的getById(2)是一个示例,你需要根据实际情况替换成你的网络请求方法和参数。

以上就是使用Retrofit发送异步网络请求的基本步骤。你可以根据实际需求进行进一步的修改和扩展。


参考资料

https://blog.csdn.net/m0_37796683/article/details/90702095


http://www.ppmy.cn/news/1228385.html

相关文章

2024年全网最全的Jmeter+ant+jenkins实现持续集成教程

jmeterantjenkins持续集成 一、下载并配置jmeter 首先下载jmeter工具&#xff0c;并配置好环境变量&#xff1b;参考&#xff1a;https://www.cnblogs.com/YouJeffrey/p/16029894.html jmeter默认保存的是.jtl格式的文件&#xff0c;要设置一下bin/jmeter.properties,文件内容…

Java21新增特性

版本介绍 Java 21是Java平台的一个新版本&#xff0c;于2023年9月19日由Oracle公司正式发布。这个版本包含了数千个性能、稳定性和安全性更新&#xff0c;以及几十个新功能和增强。其中&#xff0c;15个增强被赋予了自己的JDK增强提案&#xff08;JEP&#xff09;&#xff0c;…

函数式编程框架 functionaljava 简介

文章目录 一、函数式编程起源二、functionaljava 框架简介 一、函数式编程起源 ​ 函数式编程起源于数理逻辑&#xff08;范畴论&#xff0c;Category Theory&#xff09;&#xff0c;起源于λ演算&#xff0c;这是一种演算法&#xff0c;它定义一些基础的数据结构&#xff0c…

C练习题_13

一、单项选择题(本大题共20小题&#xff0c;每小题2分&#xff0c;共40分。在每小题给出的四个备选项中&#xff0c;选出一个正确的答案&#xff0c;并将所选项前的字母填写在答题纸的相应位置上 以下叙述不正确的是&#xff08;)。 A.C程序中&#xff0c;语句之间必须用分号分…

GitHub如何删除仓库

GitHub如何删除仓库 删除方法第一步第二步第三步 删除方法 第一步 在仓库的界面选择Settings 第二步 选择General,页面拉到最后。 第三步 后续按照导向删除仓库即可。

SOME/IP 协议介绍(六)接口设计的兼容性规则

接口设计的兼容性规则&#xff08;信息性&#xff09; 对于所有序列化格式而言&#xff0c;向较新的服务接口的迁移有一定的限制。使用一组兼容性规则&#xff0c;SOME / IP允许服务接口的演进。可以以非破坏性的方式进行以下添加和增强&#xff1a; • 向服务中添加新方法 …

Flume的安装部署及常见问题解决

1.安装地址 &#xff08;1&#xff09; Flume官网地址&#xff1a;http://flume.apache.org/ &#xff08;2&#xff09;文档查看地址&#xff1a;http://flume.apache.org/FlumeUserGuide.html &#xff08;3&#xff09;下载地址&#xff1a;http://archive.apache.org/dist…

npm私有云

安装node时npm会自动安装&#xff0c;npm也可以单独安装。 package.json 在使用npm时&#xff0c;package.json文件是非常重要的&#xff0c;因为它包含了关于项目的必要信息&#xff0c;比如名称、版本、依赖项等。在初始化新项目时&#xff0c;通常会使用npm init命令生成一…