간단한 컨트롤러에 내 REST 호출 설치 프로그램에 항상 406 (허용되지 않는) 응답 코드가 표시됩니다. 내 요청 헤더에 Accept : 'application/json'이 있고 또한 내 수업 경로에 jackson 라이브러리가 있습니다.스프링 4.0 REST 호출 결과 406 오류 코드
4.0.6 버전을 사용했습니다 (4.0.5도 사용). 응용 프로그램 서버 톰캣 8
나는 또한 나의 방법 주석을 변경하려고
@RestController
@RequestMapping("/menu")
public class TestController extends AbstractController {
@RequestMapping(method = RequestMethod.GET, value = "/config")
public Map getConfig (final HttpServletRequest request)
{
return new HashMap();
}
}
내 클래스 :
이@RequestMapping(method = RequestMethod.GET, value = "/config", produces={"application/json"})
내 봄 웹 컨텍스트 파일 :
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
<mvc:annotation-driven content-negotiation-manager="contentNegotiationManager"/>
<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
<property name="defaultContentType" value="application/xml" />
<property name="mediaTypes">
<map>
<entry key="json" value="application/json"/>
</map>
</property>
</bean>
</beans>
나는 또한 시도 간단하게
<mvc:annotation-driven/>
태그가없고 contentNegotiationManager bean이 없습니다. 응용 프로그램이 두 가지 방법으로 시작하고 서버의 메소드가 호출되지만 매번 406 응답을받습니다.
클라이언트 요청 헤더 :
Host: 127.0.0.1:8002
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0
Accept: application/json,application/xml
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/json
X-Requested-With: XMLHttpRequest
Referer: http://127.0.0.1:8002/myapp/login.rest
Cookie: JSESSIONID=431505385C0E8A5AAC878BA2B8AE1F92;
Connection: keep-alive
잭슨 사용 라이브러리 내 클래스 경로에 : 나는 또한 잭슨을 사용하여 시도
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.4.3</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.4.3</version>
</dependency>
도서관 2.3.3.
예제가있는 간단한 봄 부팅 예제를 실행하면 정상적으로 작동합니다. 내가 여기서 무엇을 놓치고 있는지 잘 모르겠습니다.
Stackoverflow의 다른 Spring 406 문제 대부분은 누락 된 jackson 라이브러리 또는 잘못된 요청 헤더와 관련이있는 것처럼 보입니다. 둘 다 있습니다.
내 스프링 웹 컨텍스트 파일에 뭔가가 누락되어 있다고 생각합니다. 하지만 저는 Spring이 JSON에 대한 응답을 자동으로 변환해야한다는 인상하에있었습니다. 내가 여기에없는 것에 대한 아이디어가 있습니까?
내 모든 시도에서 서버 코드가 호출되었지만 매번 응답이 406입니다.
왜 @@ ResponseBody를 리턴 코드에 함께 선언하지 않았는지 궁금하다. Object –
@ manuel-jordan, 봄 4.0부터 Restcontoller 주석을 사용하면 Responsebody가 필요하지 않다. – jazzkookie
동의하지 않음, 죄송합니다. @ 컨트롤러 만 실수. 고맙습니다. –