首页 > 解决方案 > 改造 2 @FormUrlEncoded 与空字段

问题描述

我发送这个:

@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)

但它唯一的发送fieldName1fieldName3

我的 gsonbuilder 已经有了serializeNulls(),所以它应该在其中包含空值,但 logcat 显示它不包括fieldName2

我需要在改造 2 中将 fieldName2 更新为 null

标签: javaandroidgsonretrofit2

解决方案


终于成功了,以下是我所做的更改:

将我的 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)

推荐阅读