改造 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)。
我正在尝试执行状态更新 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 字段,它是我按照 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)。