android - 改造:@Field 和 @Body 有什么不同

标签 android post retrofit

在一些post请求中,我不知道什么时候用@Field,什么时候用@Body。 有什么区别:

@POST("users/register")
    Call<String> register(@Body RequestBody registerRequest);

和:

@POST("users/register")
    Call<String> register(@Field String id, @Field String pass);

我可以使用@Body 代替@Field 并反转吗?如果不是,为什么?以及如何知道这种情况使用@Body,其他情况使用@Field?

能否请您给我一些案例并解释一下,谢谢。

最佳答案

@Body – 将 Java 对象作为请求正文发送。

@Field – 以 form-urlencoded 格式发送数据。这需要在方法中附加一个 @FormUrlEncoded 注释。 @Field 参数仅适用于 POST。 @Field 需要一个强制参数。如果 @Field 是可选的,我们可以使用 @Query 代替并传递一个空值。

关于android - 改造:@Field 和 @Body 有什么不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43337068/

相关文章:

android - 使用 Intent.ACTION_OPEN_DOCUMENT_TREE 时的起始路径

android - 如何在Retrofit2中发送可选参数?

java - 使用 Retrofit 2 将图像从图库/相机上传到服务器(okhttp 问题)

java - 来自改造者的回复

mysql - 将 2 个数字相加,一个来自数据库结果,另一个来自 post 数组

iphone - ASIFormDataRequest POST 返回网站源代码?

java - 如何在Android中实现推送通知

android - Espresso 测试无法访问类文件

android - 自定义 ListView 不会被填充

php - 无法使用来自另一个 $_POST 函数的用户名将数据插入 MySql 表