我正在发送这个:
@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
我的 gsonbuilder 上已经有 serializeNulls()
,因此它应该包含 null,但 logcat 显示它不包含 fieldName2
我需要在retrofit2中将fieldName2更新为null
最佳答案
终于成功了,以下是我所做的更改:
将我的 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)
关于java - 带空字段的改造 2 @FormUrlEncoded,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54336603/