我有一个后端服务器,想用主体参数进行Http POST调用。
我创建一个带有API密钥的@Header和带有用户信息的@Body的Post请求。但是,当我按下api时,作为响应,它会显示类似“ data”:[]的响应,而它应该类似于“ data”:{}。但是,如果我发送多个@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"
}
答案 0 :(得分:1)
您的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>
答案 1 :(得分:0)
是的,您可以这样做
@POST(Constants.API_USER_REGISTRATION)
fun generateOTPForgotPassword(@Body signInInfo: SignInInfo): Call< RegistrationResponse>
就像你一样。