2012-08-02 2 views
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> 

#xD;은 HTTP BODY의 중간에서 잘못된 것으로 추측됩니다 ( ). 모든 RFC에서 참조를 찾을 수 없습니다.이 POST에 대해 "HTTP 상태 400 - 잘못된 요청 본문"이 나타나는 이유는 무엇입니까?

이 POST에 대해 "HTTP 상태 400 - 잘못된 요청 본문"이 나타나는 이유는 무엇입니까?

+0

아마도 XML에서 앰퍼샌드가 잘못 되었기 때문일 수 있습니다. – heikkim

+0

RFC 참조를 제공해 주시겠습니까? – user77115

답변

1

요청 본문이 HTTP를 준수하지 않음을 나타내지는 않습니다. 이는 요청이 응용 프로그램과 호환되지 않음을 나타냅니다. 아마도이 상황에서 400이 잘못된 응답 코드 일 수 있지만 동시에이 상황에서 직접 사용하는 것으로 알려져 있습니다.

정말 (IMHO) 요청이 위의 응용 프로그램을 준수하지 않는 경우 별도의 응답 코드가 있어야하며 400은 HTTP 프로토콜 수준에서 (as RFC2616 states) "형식이 잘못된 구문"으로 예약되어야합니다. 하지만 그렇지 않다. 그래서 400 명이 가장 의미가있다. 그것은 그들이 좋아하지 않는 수도 있습니다

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

: <CreateEvent> 태그가 누락 오프닝 >을 닫는 - 당신은 XML 구문 오류가 있기 때문에 그것은 당신의 입력에서 borks 이유에

내 생각이다 캐리지 리턴, 어떤 경우에는 그것을 밖으로 스트립.

+0

죄송합니다. 누락 된 >은 오타였습니다. 앱은 Google이 아니고 내부 용입니다. 원칙은 같고 앰퍼샌드를 사용하는 것이 유효하다고 생각합니다. POST 본문에 – user77115

+0

요청 본문에 유효하지 않은 * content *가 없습니다. 본문을 허용하지 않는 메서드를 사용하거나 콘텐츠 형식이 콘텐츠와 일치하지 않는 한. 어쩌면 content-type'text/xml'을 시도 할 것인가? 또한 요청에'Host :'또는'Content-Length :'헤더 나 HTTP 버전 및 URI가 전체 URL 인 것으로 보이지 않습니다. 모두 RFC 위반입니다. 는 프록시 서버를 사용하고 POST 메소드를 사용하기 때문에 'Content-Length :'는 필수 항목입니다.) - 앱이 내부라고 말하면 소스 코드를 제어합니까? – DaveRandom

+0

RFC 위반을 지적 해 주셔서 감사합니다. – user77115

관련 문제