android - Retrofit2 - 在 GET 请求中发送类型 T 的数组

标签 android retrofit2

我需要使用 retrofit2 在 GET 请求的正文中发送类型为 User[] 的数组。这是最终有效载荷必须看起来的样子:

body: {
  "data_id": 1,
  "data_provider": "string_value",
  "users": [
    {
      user_id: 1,
      name: 'name'
    },
    {
      user_id: 1,
      name: 'name'
    },
    ...
  ]
}

当前的 API 实现如下所示:

@GET("api/users/submit.json")
Call<UserData> submitData(@Query("data_id") int data_id, @Query("data_provider") String data_provider, @Query("users[]") User[] users);

数组列表代码:

//Converting the ArrayList<User> usersList to an array
User[] userArray = usersList.toArray(new User[0]);
//The userArray is passed to the retrofit API along with the other request values (data_id, data_provider)

在记录改造请求时,data_iddata_provider 被正确发送,但 User 数组除外。用户数组如下所示:

api/users/submit.json?data_id=1&data_provider=test&users[]=com.testapp.models.User@7d57487

如何在 GET 请求正文中发送类型为 User 的数组?

最佳答案

您可以使用@Body 注解在请求正文中发送用户对象

大致是这样的:

你的用户模型

class User {
}

存储用户列表的用户类

class RequestBody {
int data_id;
String data_provider;
List<User> users;
}

@POST("api/users/submit.json")
Call<UserData> submitData(@Body RequestBody requestbody);

您可以在此处详细了解它:

https://futurestud.io/tutorials/retrofit-send-objects-in-request-body

关于android - Retrofit2 - 在 GET 请求中发送类型 T 的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44896809/

相关文章:

android - 刷新 android PreferenceFragment

android - Retrofit 2 on Android 6 设置零路径参数

java - Android:是否有更简单的方法在 if else 语句中调用特定整数?

android - Kotlin 中的 Retrofit2 + SimpleXML : MethodException: Annotation must mark a set or get method

java - 无法从 jsonobject 中提取 jsonarray

android - MalformedJsonException : Use JsonReader. setLenient(true) 在第 1 行第 1 列路径中接受格式错误的 JSON

android - 使用 RxJava2 和 Retrofit2 Mosby MVI 的 OnErrorNotImplementedException

java - 当前如何从 Android 应用程序更新 Twitter 状态的最简单示例是什么?

javascript - 使用cordova在android中调用无法工作,从手机中获取联系人

android - 添加改造实现依赖项时出现错误gradle [无法从/data/app/打开dex文件]