为什么我会为此POST获取“HTTP状态400 - 非法请求正文”?

时间:2012-08-02 10:27:57

标签: xml http

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&#xD;</Version>
  <data>xyz</data>
</CreateEvent>

我猜测CRLF即#xD;在HTTP BODY中间是非法的, 但我在任何RFC中都找不到引用。

为什么我会为此POST获得“HTTP状态400 - 非法请求正文”?

1 个答案:

答案 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 >

他们也可能不喜欢回车,这种情况只是将其剥离。