android - 多个@Body 字段出错 - retrofit2 beta3

标签 android retrofit retrofit2

我刚开始为 android 进行改造。当我尝试为发布请求的正文指定 2 个字段时出现错误:

找到多个@Body 方法注解。方法的(参数#2)

调用在我的 API 接口(interface)文件中定义为:

@POST("auth/login")
Call<UserData> login(@Body String username, @Body String password);

然后我创建调用:

Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(baseURL)
            .addConverterFactory(GsonConverterFactory.create())
            .build();

APIService service = retrofit.create(APIService.class);
Call<UserData> call = service.login(username, password);

创建调用时会产生错误(没有机会执行它)。 当我删除其中一个主体字段时,它似乎工作正常。

有什么想法吗?

最佳答案

使用多个@Body 是个坏主意,因为这里的@Body 表示HTML POST 的消息正文。

(详情:How to send data in the HTTP request body when using an HTML form?)

我建议您定义一个包含用户名和密码的类,如下所示。

public class LoginInformation {
    String username;
    String password;
}

然后,在该类实例上填写您的信息,然后使用它。

@POST("auth/login")
Call<UserData> login(@Body LoginInformation loginInformation);

关于android - 多个@Body 字段出错 - retrofit2 beta3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34667711/

相关文章:

android - 使用 Retrofit 将无名 JSONArray 转换为列表

android - 如何在改造android中发布数组

java - Android Retrofit - 发送动态数量的 POST 参数

android - Rxjava2、Retrofit2 - 在两个类之间传输数据。

android - 通知消息仅在设备连接到 USB 时显示

java - 通过HSV颜色计算圆内的点

java - Web 服务的身份验证

android - 无法使用 Eclipse Kepler 创建新的 Android 应用程序项目或访问 Android 首选项

android - 使用 Retrofit 下载 URL

java - 改造 POST java.io.IOException : unexpected end of stream on Connection caused by java. io.EOFException:\n 未找到: