java - 带空字段的改造 2 @FormUrlEncoded

标签 java android gson retrofit2

我正在发送这个:

@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(),因此它应该包含 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/

相关文章:

java - 围绕数据库连接创建抽象接口(interface)

java - 是什么阻止 Java 使用多种签名算法验证签名的 jar

android - 如何使用 Android 的身份验证标签进行 GCM 加密

android - 如何在 android 中启用和禁用 GCM?

java - 由 : com. google.gson.JsonSyntaxException : java. lang.IllegalStateException 引起:预期为 BEGIN_OBJECT,但在第 1 行第 2 列处为 STRING

java - GSON : java. lang.IllegalStateException:预期为 BEGIN_OBJECT,但为 BEGIN_ARRAY

java - Apache SSHD 客户端获取服务器公钥

java - 如何向安卓键盘添加一些东西?

java - 使用Gson解析对象数组

java - 将 Swing 组件添加到 Eclipse RCP 插件