android - 格式化 Rails API 的 RetroFit post 请求

标签 android retrofit

全部,

我第一次开始使用 RetroFit,它非常棒。也就是说,我在格式化 POST 请求时遇到了障碍。

我使用的 API 指定要创建用户,我需要像这样发送用户对象:

{
"user": {
    "first_name": "John",
    "last_name": "Doe",
    "email": "john@doe.com",
    "password": "jigglypuff123",
    "password_confirmation": "jigglypuff123"
  }
}

我知道我可以用这种形式发送一个 JsonObject,但我更想利用 RetroFit

如果我传入一个 User 对象,它不会被包含在 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 - 格式化 Rails API 的 RetroFit post 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28684992/

相关文章:

android - 如何在 Android 中正确加载存档网页?

android - 以编程方式部分隐藏布局?

android - 如果项目 View 中有 Button,则 onItemClick 不起作用

java - 从 Retrofit 加载数据问题 : Expected BEGIN_ARRAY but was BEGIN_OBJECT

android - 将音频传输到 Doorbird 设备

android - 无法解析 : okhttp loggin-interceptor

android - 右侧带有图标的 Material 按钮

android - 以 20 个 kotlin block 的形式迭代字符串的字符

android - Auth 1.0 oauth_signature 创建 Android for magento API

android - 如何在 Retrofit Callback 中调用 Intent ?