POST http://anyservice.com/my/servlet/interface/v1/book/events
Content-Type: application/xml
Accept: application/xml
Authorization: Basic cXRE456ggz
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<CreateEvent>
<serviceType>ABC</serviceType>
<Version>2
</Version>
<data>xyz</data>
</CreateEvent>
我猜测CRLF即#xD;
在HTTP BODY中间是非法的,
但我在任何RFC中都找不到引用。
为什么我会为此POST获得“HTTP状态400 - 非法请求正文”?
答案 0 :(得分:1)
这并不表示请求正文不符合HTTP,而是表明请求不符合应用程序。在这种情况下,可以说400是错误的响应代码,但同时我也知道在这种情况下我会使用它。
真的(恕我直言)当请求不符合上层应用程序时,应该有一个单独的响应代码,并且应该在HTTP协议级别为(as RFC2616 states)“格式错误的语法”保留400。但是没有,所以400最有意义。
我猜你输入的原因是因为你有一个XML语法错误 - 开始<CreateEvent>
标记缺少它关闭>
:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><CreateEvent<serviceType>ABC</serviceType>...
^^ Missing >
他们也可能不喜欢回车,这种情况只是将其剥离。