使用 Django web API 连接移动客户端,我使用 Retrofit @Field 将值发布到 API,当我使用 postman 测试时它工作得很好,但在移动客户端中使用 Retrofit POST 发布参数做了同样的事情 @字段
@FormUrlEncoded
@POST(Urls.API_REGISTER)
fun register(
@Header("Content-Type") contentType: String,
@Field("username") userName: String,
@Field("password") password: String,
@Field("email") email: String
): Observable<JsonElement>
并将参数的值作为数组元素获取,如下所示
{'username': ['kabildev'], 'password': ['Kabil@123'], 'email': ['kapil@outlook.com']}
即使我曾尝试将 Content-Type 设置为 application/json 但没有成功,是否有任何原因为什么它会形成一个数组值,仅供引用,当从 postman 发布时它需要如下
{'username': 'kabildev', 'password': 'Kabil@123', 'email': 'kapil@outlook.com'}
最佳答案
当 @Field 被替换为 @Body 创建一个名为 User 的新数据类并使请求如下
@POST(Urls.API_REGISTER)
fun register(
@Body user: User
): Observable<JsonElement>
另外别忘了去掉@FormUrlEncoded,让User模型如下
data class User(@SerializedName("username") val userName: String,
@SerializedName("password") val password: String,
@SerializedName("email") val email: String)
关于android - 通过@Field 进行改造发布使值成为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57447117/