Подтвердить что ты не робот

Как отправить массив в модифицированный андроид

Как я могу опубликовать следующий параметр в модификации с помощью метода post?

 "params":{"body": {
    "learning_objective_uuids": [
      "ED4FE2BB2008FDA9C8133FF462959C0968FAB98C4D1DB8F2"
    ],
    "note": "FasfAFSASFASDF",
    "user_uuids": [
      "EDF8B7EC20005ACC5C40FF7D6E988801F5BAD83CBBCDB97F",
      "EDF8F78F2000569C64101F244AA20C0070D2A7FCB1939E19"
    ]
  }
}
} }
4b9b3361

Ответ 1

@FormUrlEncoded
@POST("service_name") 
   void functionName(
        @FieldMap Map<String, String> learning_objective_uuids, @FieldMap Map<String, String> user_uuids, @Field("note") String note,
        Callback<CallBackClass> callback
    );

Лучшее решение: используйте arraylist.. Ссылка: johnsonsu

@FormUrlEncoded
    @POST("service_name") 
       void functionName(
            @Field("learning_objective_uuids[]") ArrayList<String> learning_objective_uuids, @Field("user_uuids[]") ArrayList<String> user_uuids, @Field("note") String note,
            Callback<CallBackClass> callback
        );

Ответ 2

см. этот пример, где мне нужно передать данные регистрационных полей как запрос json

@POST("magento2apidemo/rest/V1/customers")
Call<RegisterEntity> customerRegistration(@Body JsonObject registrationData);

здесь я создал registrationData​​p >

private static JsonObject generateRegistrationRequest() {
        JSONObject jsonObject = new JSONObject();
        try {
            JSONObject subJsonObject = new JSONObject();
            subJsonObject.put("email", "[email protected]");
            subJsonObject.put("firstname", "abc");
            subJsonObject.put("lastname", "xyz");

            jsonObject.put("customer", subJsonObject);
            jsonObject.put("password", "password");

        } catch (JSONException e) {
            e.printStackTrace();
        }
        JsonParser jsonParser = new JsonParser();
        JsonObject gsonObject = (JsonObject) jsonParser.parse(jsonObject.toString());
        return gsonObject;
    }

Ответ 3

Перейдите на сайт: JSON Schema 2 POJO

Вставьте свой Json-формат и затем

Выберите тип источника: JSON, стиль аннотации: нет

Создайте класс POJO, например, ваше имя класса: MyPOJOClass

Затем в вашем Api:

@POST("endpoint")
public Call<Void> postArray(@Body MyPOJOClass mypojoclass);

Если у вас есть заголовки, вы можете добавить их в такие параметры:

@Header("Accept") String accept,@Header("Content-Type") String contentType

@Edit: для вашего отзыва отзыва мой ответ: how-to-use-gson-2-0-on-onresponse-from-retrofit-2-0

Ответ 4

если вы хотите отправить список с тем же именем, единственное, что мне @Query - это использование @Query

@FormUrlEncoded
@POST("service_name") 
   void functionName(
        @Query("category") List<Int> categories
    );

это будет отправлено следующим образом: https://example.com/things?category=100&category=101&category=105

принятые ответы не работают в Retrofit2

Ответ 5

На сегодняшний день запущена implementation 'com.squareup.retrofit2:retrofit:2.1.0' Retrofit implementation 'com.squareup.retrofit2:retrofit:2.1.0'

Это прекрасно работает...

@FormUrlEncoded
@POST("index.php?action=item")
Call<Reply> updateManyItem(@Header("Authorization") String auth_token, @Field("items[]") List<Integer> items, @Field("method") String method);

Вы можете игнорировать @Header и @Field("method").... основной частью является @Field("items[]") List<Integer> items

Это то, что позволяет отправлять товары. На стороне API я просто ищу массив целых чисел, и это прекрасно работает.

Ответ 6

Я нашел новый обходной путь:

Вы можете отправить его в виде строки:

@POST("CollectionPoints")
@FormUrlEncoded
Call<SomeResponse> postSomething(@Field("ids")String ids);

и отправьте его так:

Call<SomeResponse> call = service.postSomething("0","0", Arrays.toString(new int[]{53551, 53554}));

С наилучшими пожеланиями!