Android Kotlin环境下如何使用Retrofit发送POST请求
Android Retrofit 发送指定结构JSON POST请求实现步骤
1. 添加必要依赖
在模块级的build.gradle文件中添加Retrofit核心库和Gson转换器依赖,同步项目:
dependencies { // Retrofit核心库 implementation 'com.squareup.retrofit2:retrofit:2.9.0' // Gson转换器,用于实现JSON与实体类的自动互转 implementation 'com.squareup.retrofit2:converter-gson:2.9.0' }
2. 编写对应JSON结构的实体类
按照你提供的JSON结构逐层定义实体类即可,这里以Kotlin代码为例,Java写法只需编写对应带getter、setter的普通类即可:
// 最外层请求实体 data class PostRequest( val status: String, val message: String, val data: DataItem ) { // 对应data层级的实体 data class DataItem( val request: RequestInner ) { // 对应data.request层级的实体 data class RequestInner( val textData: String ) } }
3. 定义API请求接口
创建Retrofit服务接口,指定请求方式、路径和请求体:
interface ApiService { // 注解内替换为你的接口实际请求路径 @POST("your/interface/path") // 协程写法,不需要协程的话可改为Call<ResponseBody> postData(@Body request: PostRequest) suspend fun postData(@Body request: PostRequest): Response<ResponseBody> }
4. 初始化Retrofit实例
val retrofit = Retrofit.Builder() // 替换为你的接口实际base地址,必须以/结尾 .baseUrl("https://your.api.base.url/") .addConverterFactory(GsonConverterFactory.create()) .build() // 生成API服务实例 val apiService = retrofit.create(ApiService::class.java)
5. 组装参数并发起请求
这里以Android生命周期协程的写法为例:
// 按照业务需求填充参数 val request = PostRequest( status = "实际要传的status值", message = "实际要传的message值", data = PostRequest.DataItem( request = PostRequest.DataItem.RequestInner( textData = "123" ) ) ) // 在协程作用域内执行请求 lifecycleScope.launch { try { val response = apiService.postData(request) if (response.isSuccessful) { // 请求成功,处理返回结果 val resultContent = response.body()?.string() } else { // 接口返回错误码,处理异常逻辑 } } catch (e: Exception) { // 网络异常、解析失败等异常捕获处理 e.printStackTrace() } }
注意事项
- 务必在
AndroidManifest.xml中添加网络权限:<uses-permission android:name="android.permission.INTERNET" /> - 如果接口使用http明文请求,需要额外配置网络安全配置允许明文流量
- baseUrl必须以
/结尾,否则会出现路径拼接错误
内容的提问来源于stack exchange,提问作者Purnami Indryaswari
相关产品推荐
相关产品推荐

