所有,
我第一次开始使用RetroFit,它非常棒.也就是说,我在格式化POST请求时遇到了障碍.
我正在使用的API指定要创建用户,我需要像这样发送用户对象:
{
"user": {
"first_name": "John",
"last_name": "Doe",
"email": "john@doe.com",
"password": "jigglypuff123",
"password_confirmation": "jigglypuff123"
}
}
我知道我可以以这种形式发送JsonObject,但我更喜欢利用RetroFit.
如果我传入一个User对象,它不会被包装在用户中.只是
{
"first_name": "John",
"last_name": "Doe",
"email": "john@doe.com",
"password": "jigglypuff123",
"password_confirmation": "jigglypuff123"
}
已发送.
我尝试使用@Field注释,最后得到了这个:
@POST("/users")
void createUser(@Field("user[first_name]") String first, @Field("user[last_name]") String last, @Field("user[email]") String email, @Field("user[password]") String password, @Field("user[password_confirmation]") String password_confirmation, Callback<User> cb);
我最终得到了这个错误:
@Field parameters can only be used with form encoding. (parameter #1)
有谁知道如何实现这一目标?
解决方法:
试试这个:
@FormUrlEncoded
@POST("/users")
void createUser(@Field("user") User user, Callback<User> cb);
让我知道发生什么事 :)