android – 格式化rails API的RetroFit post请求

所有,

我第一次开始使用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);

让我知道发生什么事 :)

上一篇:android – Retrofit,Gson和一组异构对象


下一篇:android – 使用Retrofit访问带密钥/ id的API