2016-06-28 2 views
2

나는 클라이언트 응용 프로그램이 있는데이 요청자에게 Content-Type: application/json 대신에 Content-Type: json이라는 요청 heder를 보냅니다.spring mvc에서 json으로 사용자 정의 컨텐츠 유형을 추가하는 방법은 무엇입니까?

(가까운 장래에) 클라이언트 응용 프로그램을 변경할 수있는 방법이 없습니다. Spring을 사용하여 서비스를 구현 중이며 content-Type이 application/json 인 경우에만 엔드 포인트가 작동합니다. "json"이 content-type으로 설정되면 415 지원되지 않는 MediaType 오류가 발생합니다.

나는이 문제를 해결하려면 어떻게

는 단기 수정에 대한 해킹이 될 것이다 이상적인

이 작동하지만 "응용 프로그램/JSON"

@RequestMapping(value="person", method = RequestMethod.POST, consumes="application/json") 
    @ResponseBody 
    public List<PersonProfile> getProfiles (@RequestBody Wrapper wrapper) { 

이를 같이 헤더를 전송하는 클라이언트를 필요로

컨테이너 시동시 오류가 발생합니다.

@RequestMapping(value="person", method = RequestMethod.POST, consumes="json") 
    @ResponseBody 
    public List<PersonProfile> getProfiles (@RequestBody Wrapper wrapper) { 

답변

0

415 지원되지 않는 MediaType 오류입니다.

아약스 코드를 모르겠다.

하지만 jquery 문서를 읽었습니다. 유형; 어쩌면

contentType이

의 contentType ('응용 프로그램/x-www-form-urlencoded를 캐릭터 세트 = UTF-8'기본) : 해결 부울 또는 문자열 을 서버에 데이터를 보낼 때 ,이 콘텐츠 유형을 사용하십시오. 기본값은 "application/x-www-form-urlencoded; charset = UTF-8"이며, 대부분의 경우에 문제가 없습니다. 명시 적으로 content-type을 $ .ajax()로 전달하면 데이터가 전송되지 않더라도 항상 서버로 전송됩니다. jQuery 1.6에서는 false를 전달하여 jQuery에 컨텐트 유형 헤더를 설정하지 않도록 지시 할 수있다. 참고 : W3C XMLHttpRequest 사양은 charset이 항상 UTF-8임을 나타냅니다. 다른 캐릭터 세트를 지정해도, 브라우저는 강제적으로 인코딩을 변경하지 않습니다. 참고 : 도메인 간 요청의 경우 콘텐츠 유형을 application/x-www-form-urlencoded, multipart/form-data 또는 text/plain 이외의 것으로 설정하면 브라우저가 프리 플라이트 OPTIONS 요청을 서버로 보내도록 트리거합니다.

dataType와

dataType와 (기본값 : 지능형 추측 (XML, JSON, 스크립트 또는 HTML)) 유형 : 문자열 서버에서 다시 기다리고있어 데이터의 유형 . 아무 것도 지정하지 않으면 jQuery는 응답의 MIME 유형을 기반으로 유추하려고 시도합니다 (XML MIME 유형이 XML을 생성합니다. 1.4에서는 JSON이 JavaScript 객체를 생성하고 1.4 스크립트는 스크립트를 실행하며 나머지는 문자열로 반환 됨). 사용 가능한 유형 (성공 콜백의 첫 번째 인수로 전달 된 결과)은 다음과 같습니다. "xml": jQuery를 통해 처리 할 수있는 XML 문서를 반환합니다. "html": HTML을 일반 텍스트로 반환합니다. 포함 된 스크립트 태그는 DOM에 삽입 될 때 평가됩니다. "script": 응답을 JavaScript로 평가하고 일반 텍스트로 반환합니다. cache 옵션이 true로 설정되지 않은 한 쿼리 문자열 매개 변수 = [TIMESTAMP]을 URL에 추가하여 캐싱을 비활성화합니다. 참고 : 이것은 원격 도메인 요청에 대한 POST를 GET으로 변환합니다. "json": 응답을 JSON으로 평가하고 JavaScript 객체를 반환합니다.교차 도메인 "json"요청은 요청에 jsonp : false가 포함되어 있지 않은 한 "jsonp"로 변환됩니다. JSON 데이터는 엄격한 방식으로 구문 분석됩니다. 잘못된 형식의 JSON이 거부되고 구문 분석 오류가 발생합니다. jQuery 1.9부터는 빈 응답도 거부됩니다. 서버는 null 또는 {} 대신에 응답을 리턴해야합니다. 적절한 JSON 형식에 대한 자세한 내용은 json.org를 참조하십시오. "jsonp": JSONP를 사용하여 JSON 블록에로드합니다. 추가 "? callback =?" URL의 끝에 추가하여 콜백을 지정하십시오. 캐시 옵션이 true로 설정되어 있지 않으면 쿼리 문자열 매개 변수 " = [TIMESTAMP]"을 URL에 추가하여 캐싱을 비활성화합니다. "text": 일반 텍스트 문자열입니다. 여러 개의 공백으로 구분 된 값 : jQuery는 jQuery 1.5에서 dataType을 Content-Type 헤더에서받은 값에서 필요로하는 값으로 변환 할 수 있습니다. 예를 들어 텍스트 응답을 XML로 처리하려면 dataType에 "text xml"을 사용하십시오. JSONP 요청을 텍스트로 수신하고 jQuery로 XML : "jsonp text xml"로 해석 할 수도 있습니다. 마찬가지로, "jsonp xml"과 같은 속기 문자열은 먼저 jsonp에서 xml로 변환하려고 시도하고, 실패하면 jsonp에서 텍스트로 변환 한 다음 텍스트를 xml로 변환합니다.

그리고 소비와 생산으로 검색해야합니다.

사용하는 것이 잘못되었습니다.

관련 문제