改造 2:具有 body 时出现 400 错误请求

Retrofit 2: 400 Bad Request when having body

我正在尝试执行状态更新 PUT 请求。下面例子returns200在Postman中:

URL:

http://www.example.com/users/3/status?seId=1&dt=2016-11-01T00:00:00Z

HEADERS:

Content-Type:application/json

charset:utf-8

Authorization:Bearer LONG_TOKEN_HERE

BODY:

{ "status": 1 }

这是我的 Retrofit 2 请求的结构:

@PUT("users/{id}/status")
Call<Void> updateEventStatus(@Header("Authorization") String token,
                             @Path("id") int id,
                             @Query("seId") int seId,
                             @Query("dt") String dateTime,
                             @Body Status status);

请求的URL与Postman中的headers相同,所以我怀疑它与body有关。 Status 只是一个包装 class,带有一个名为 status 的 int 字段,它是我按照 创建的(我对凭据做了同样的事情,效果很好)。我还尝试在 body 中设置 int 类型的状态,但它也会导致 Bad Request。

知道 Postman 请求和 Retrofit 2 请求之间的区别吗?谢谢!

编辑: 这是 Retrofit 2 中的 originalRequest

Request{method=PUT, url=http://example.com/api/users/3/status?seId=0&dt=2016-10-04T05:30:00Z, tag=null}

headers: Authorization: Bearer LONG_TOKEN_HERE

contentType: application/json; charset=UTF-8

content:

0 = 123
1 = 34
2 = 115
3 = 116
4 = 97
5 = 116
6 = 117
7 = 115
8 = 34
9 = 58
10 = 51
11 = 125

Translated content:
{"status":3}

最终,这是一个服务器端错误(我一开始收到了一个错误的 seId,然后尝试使用不存在的 seId 进行 PUT)。