【发布时间】:2018-08-29 09:57:19
【问题描述】:
伙计们,我有一个接受表单输入的 api
[{"username":"usr","password":"123456","userflag":"1"}]
我写了一个改造服务
@FormUrlEncoded
@POST("login")
fun login( @Field("login") List<LoginModel>): Call<Any>
LoginModel 是
data class LoginModel(
@SerializedName("username") var username:String,
@SerializedName("password") var password:String,
@SerializedName("userflag") var userflag:String
)
当我通过将参数作为列表传递来调用 api 时 服务器给出 500 错误,因为它不会接收参数。
但是当我使用 JsonArray 而不是 List as
时,同样的事情也有效json.addProperty("username", loginModel.username)
json.addProperty("userflag", loginModel.userflag)
json.addProperty("password", loginModel.password)
var jarray = JsonArray()
jarray.add(json)
var call: Call<Any> = GetDataService.create().login(jarray.toString())
随着
@FormUrlEncoded
@POST("login")
fun login( @Field("login") data:String): Call<Any>
为什么同样拒绝使用 List 作为参数..??
【问题讨论】:
-
应该是
@Field而不是@Body -
密钥“login”应该被传递。“login”:[{"username":"usr","password":"123456","userflag":"1"}] 是要求。 @Body 不接受密钥