android - 有没有办法传递@Body 的参数而不是多个@Field
问题描述
我有一个后端服务器,想要使用正文参数进行 Http POST 调用。
我创建了一个 Post 请求,其中 @Header 带有 api 密钥,@Body 带有用户信息。但是当我点击 api 时,它会显示这样的响应“数据”:[],它应该像“数据”:{}。但是如果我发送多个@Field 作为参数,那就没问题了。有没有使用@Body 而不是多个@Field 的过程
SignInInfo.kt
data class SignInInfo(
@SerializedName("name") val name: String,
@SerializedName("email") val email: String,
@SerializedName("user_type") val userType: String,
@SerializedName("phone") val phone: String,
@SerializedName("password") val password: String
)
api.kt
@POST(Constants.API_USER_REGISTRATION)
fun registerUser(
@Body signInInfo: SignInInfo
): Call<RegistrationResponse>
api.kt
@FormUrlEncoded
@POST(Constants.API_USER_REGISTRATION)
fun registerUser(
@Field("name") name: String,
@Field("email") email: String,
@Field("user_type") user_type: String,
@Field("phone") phone: String,
@Field("password") password: String
): Call<RegistrationResponse>
我在使用 @Field 参数时得到了这个预期的答案
{
"status": 1,
"data": {
"id": 135386,
"user_id": 1567057386,
"token": "geYs2rO6wjtO653I9OVhJWTFwYxAvnYnLGG7wm7dfa"
},
"msg": "Welcome Aomi"
}
我在使用@Body 参数时得到了这个意想不到的答案
{
"status": 2,
"data": [],
"msg": "Failed"
}
解决方案
您的 Body 数据类应如下所示
data class Body(
@SerializedName("status")
val status: Int? = 0,
@SerializedName("data")
val `data`: Data? = Data(),
@SerializedName("msg")
val msg: String? = ""
)
data class Data(
@SerializedName("id")
val id: Int? = 0,
@SerializedName("user_id")
val userId: Int? = 0,
@SerializedName("token")
val token: String? = ""
)
如果你想得到这种 json
{
"status": 1,
"data": {
"id": 135386,
"user_id": 1567057386,
"token": "geYs2rO6wjtO653I9OVhJWTFwYxAvnYnLGG7wm7dfa"
},
"msg": "Welcome Aomi"
和使用
@POST(Constants.API_USER_REGISTRATION)
fun registerUser(
@Body signInInfo: Body
): Call<RegistrationResponse>
推荐阅读
- django - Nginx: 403 禁止 nginx/1.12.1 (Ubuntu)
- office-js - Office.js 在现有加载项中导入自定义函数
- network-programming - 用于 tcp 哈希表的 5 个 turple(src ip、src 端口、dst ip、dst 端口、协议)的高效哈希
- css - 当放置在父级范围之外时,“绝对”位置元素不显示?
- amazon-web-services - aws-amplify 从 federatedSignIn 注销
- sql - SQL - 何时以及如何使用 JOIN 进行过滤
- php - WooCommerce 中的购物车总价覆盖
- image-processing - 如何将内核转换为矩阵表示法?
- c++ - CPP - 取消定义 _STRICT_ANSI_ 以便 itoa() 可以工作
- http-headers - 如何添加 HTTP 标头 Logback Logstash