Как отправить параметры массива с помощью Retrofit?

Я хочу данные post следующим образом:

{
 "user_id":"14545646",
 "list":["4545645","4545645","4545645","4545645"]
 }

Я использовал следующий метод Retrofit:

interface DeleteOrder {
 @FormUrlEncoded
 @POST("/api/shop/deleteOrder.json")
 void getPoJoDeleteOrder(@Field("user_id") String user_id, @Field("list") String[] list,Callback<pojodeleteorder> callback);
 }
</pojodeleteorder>

Правильно ли это?

3 ответа

если у вас много пользователей, затем используйте FieldMap.

пользователя [0] [почта] = & пользователь [0] [пароль] = & пользователь [1] [почта] = & пользователь [1] [пароль] =

@POST("/user/sign_in")

Вход пользователя (@FieldMap Map<string,string> fields)</string,string>;

Map<string,string> fields = new HashMap<>();
 for (int i=0;i</string,string>


Таким образом он отправит такие аргументы

project_id=986&remark=testing&details=detail_1....

Если вы хотите отправить массив в формате JSON, вам нужно добавить [] в имя массива.

@FormUrlEncoded
 @POST("/api/projectLost")
 public void projectMarkLost(
 @Field("project_id") int projectId,
 @Field("lost_project_reasons[]") ArrayList<integer> lostProjectReasons,
 Callback<jsonobject> cb
 );
</jsonobject></integer>

Таким образом, вы можете проверить параметр массива с помощью is_array ($ arr), а затем повторить его. Ссылка источника.


Если список параметров запроса исправлен, вы можете сделать это:

@POST("/user/sign_in")
User login(
 @Query("user[email]") String email,
 @Query("user[password]") String password);

В противном случае с помощью map вам нужно будет установить полный параметр запроса в качестве ключа:

values.put("user[email]", "[removed_email]");
values.put("user[password]", "123456");

Этот ответ копируется прямо из: Github Retrofit

licensed under cc by-sa 3.0 with attribution.