You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android端如何使用Retrofit2向服务器POST请求参数?

Retrofit2 POST请求带查询参数与请求体的正确实现

你的代码问题在于没有处理URL中的查询参数iname,同时需要确保请求的基础URL和参数拼接逻辑正确。以下是修正后的实现:

1. 修正接口定义

在接口方法中添加@Query注解来处理URL末尾的iname参数,同时保留@Body传递POST请求体(比如文件数据):

interface ModelApi {
    @POST("/image")
    suspend fun pushImageToModelFromAPI(
        @Query("iname") iname: String,
        @Body file: RequestBody
    )
}
  • @Query("iname")会自动将用户输入的VAR值拼接到URL中,最终形成你预期的https://192.168.1.1/image?iname=VAR格式
  • @Body负责传递POST请求的主体内容(比如你要上传的文件)

2. 构建文件RequestBody(以上传图片为例)

如果是上传图片文件,可通过以下方式构建RequestBody:

import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.RequestBody.Companion.asRequestBody

// 假设file是你要上传的图片文件对象
val fileRequestBody = file.asRequestBody("image/*".toMediaTypeOrNull())

3. 初始化Retrofit并调用接口

确保Retrofit初始化时的baseUrl设置正确:

val retrofit = Retrofit.Builder()
    .baseUrl("https://192.168.1.1/")
    .addConverterFactory(GsonConverterFactory.create())
    .build()

val modelApi = retrofit.create(ModelApi::class.java)

// 调用接口,userInput是用户输入的VAR值
modelApi.pushImageToModelFromAPI(userInput, fileRequestBody)

内容的提问来源于stack exchange,提问作者Ahmed Maher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 23:45:34