0
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 ie は HTTP BODY の途中では違法であると推測して#xD;いますが、どの RFC にも参照が見つかりません。

この POST に対して "HTTP Status 400 - Illegal Request Body" が表示されるのはなぜですか?

4

1 に答える 1

1

これは、リクエストの本文が HTTP に準拠していないことを示しているのではなく、リクエストがアプリケーションに準拠していないことを示しています。おそらく、この状況では 400 は間違った応答コードですが、同時に、私自身もこの状況でそれを使用することが知られています。

本当に (IMHO) 要求が上位のアプリケーションに準拠していない場合に使用する別の応答コードが必要であり、400 は ( RFC2616 が述べているように) HTTP プロトコル レベルでの「不正な構文」のために予約する必要があります。しかし、そうではないので、400 が最も理にかなっています。

入力で失敗する理由についての私の推測は、XML構文エラーがあるためです-開始<CreateEvent>タグが欠落しており、終了してい>ます:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><CreateEvent<serviceType>ABC</serviceType>...
                                                                  ^^ Missing >

また、改行が気に入らない可能性もあります。その場合は、それを取り除いてください。

于 2012-08-02T12:17:49.057 に答える