Дооснащение 2 @FormUrlEncoded с пустыми полями - PullRequest
0 голосов
/ 24 января 2019

Я отправляю это:

@FormUrlEncoded
@PUT("Devices/{id}")
Call<Device> updateDeviceSync(
        @Path("id") String id,
        @Field("fieldName1") Integer fieldName1,
        @Field("fieldName2") String fieldName2,
        @Field("fieldName3") String fieldName3);

Я звоню с:

        apiService.updateDeviceSync(deviceId, 0, null, timestamp)

Но отправляется только fieldName1 и fieldName3

У меня уже есть serializeNulls() на моем gsonbuilder, поэтому он должен содержать там нули, но logcat показывает, что он не включает fieldName2

Мне нужно обновить fieldName2 до нуля в модификации 2

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Наконец-то все заработало. Вот изменения, которые я сделал:

Обновил мой API до:

@PUT("Devices/{id}")
Call<Device> updateDeviceCurfewSync(             
    @Path("id") String id,
    @Body HashMap<String, Object> data);

Затем вызвал:

HashMap<String, Object> deviceSyncMap = new HashMap<>();
deviceSyncMap.put("fieldName1", 0);
deviceSyncMap.put("fieldName2", null);
deviceSyncMap.put("fieldName3", timestamp);

apiService.updateDeviceCurfewSync(deviceId, deviceSyncMap)
0 голосов
/ 24 января 2019

Как правило, вы не хотите отправлять пустые значения в запросах API.Ваш сервер будет искать поле и видеть, что его там нет.Не отправляя нули, вы экономите на пропускной способности и, в свою очередь, экономите на данных / батарее.

...