【Android】使用Retrofit2发送异步网络请求的简单案例
添加网络权限到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>>() {
@Override
public 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();
}
@Override
public 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