json - 406 Spring MVC Json,根据请求 "accept"headers No

在我的 pom.xml 中有以下详细信息

    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-core-asl</artifactId>
        <version>1.9.13</version>
    </dependency>

    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>1.9.13</version>
    </dependency>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.1.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-extras</artifactId>
        <version>3.0.5</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-core</artifactId>
        <version>3.0.5</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring-framework.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>4.1.1.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>com.googlecode.json-simple</groupId>
        <artifactId>json-simple</artifactId>
        <version>1.1</version>
    </dependency>

应用程序配置.xml:

<context:component-scan base-package="com.test" />
<mvc:annotation-driven />
<!-- <mvc:default-servlet-handler /> -->
<mvc:resources mapping="/resources/**" location="/resources/" />

JSP 页面:

 <form:form method="POST" action="/QuickBooks-UX/syncAccounts">
        <input type="submit" value="Sync Account"/>
 </form:form>

Controller :

@Controller
@RequestMapping("/")
public class QuickBooksController {
    @RequestMapping(value = "/quickBooks", method = RequestMethod.GET)
    public String qucikBooks(ModelMap model) {
        logger.info("Welcome to QuickBooks controller");
        model.addAttribute("message", "Hello Spring MVC Framework!");
        return "quickBooks";
    }
    @RequestMapping(value ="/syncAccounts", method = RequestMethod.POST)
    public @ResponseBody List<SyncData> syncAccounts(@ModelAttribute("syncData")SyncData syncData, ModelMap model, BindingResult result) {
          List<SyncData> syncDataList = new ArrayList<SyncData>();
          try {

                DefaultHttpClient httpClient = new DefaultHttpClient();
                HttpGet getRequest = new HttpGet(
                    "http://localhost:8292/qbsyncdata/getAccounts");
                getRequest.addHeader("accept", "application/json");

                HttpResponse response = httpClient.execute(getRequest);
                if (response.getStatusLine().getStatusCode() != 200) {
                    throw new RuntimeException("Failed : HTTP error code : "
                       + response.getStatusLine().getStatusCode());
                }
                BufferedReader br = new BufferedReader(
                                 new InputStreamReader((response.getEntity().getContent())));                   
                while ((output = br.readLine()) != null) {
                    JSONParser jsonParser = new JSONParser();
                    JSONArray jsonArray = (JSONArray)jsonParser.parse(output);
                    for (Object object : jsonArray) {
                        JSONObject jsonObject = (JSONObject)object;
                        syncData = new SyncData();
                        syncData.setAccountName(jsonObject.get("accountName")==null?"":jsonObject.get("accountName").toString());
                        syncData.setAccountType(jsonObject.get("accountType")==null?"":jsonObject.get("accountType").toString());
                        syncData.setAccountSubType(jsonObject.get("accountSubType")==null?"":jsonObject.get("accountSubType").toString());
                        syncData.setActive(jsonObject.get("active")==null?"":jsonObject.get("active").toString());
                        syncDataList.add(syncData);
                    }                   
                    model.addAttribute("syncData", output);
                }
                httpClient.getConnectionManager().shutdown();
              } catch (Exception e) {
                e.printStackTrace();
              } 
            }
         return syncDataList;
    }
}

我将我的网址调用为:

http://lt-50k7sy1:8080/QuickBooks-UX/quickBooks

点击按钮后,返回的 url 为 http://lt-50k7sy1:8080/QuickBooks-UX/syncAccounts 这会返回 406 并且描述是:

the resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "accept" headers

我已关注 Link ,但没有结果。

最佳答案

将以下 jar 添加到 Spring 4.1 所需的 pom.xml 文件中。*

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.4.1</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.4.1.1</version>
</dependency>

关于json - 406 Spring MVC Json,根据请求 "accept"headers Not Acceptable ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26615416/

相关文章:

java - @PostConstruct 注解和spring生命周期

java - Spring + Hibernate = 未知实体

java - Spring 3.0 设置和获取 session 属性

spring - 注释驱动配置spring时如何为bean设置init-method?

java - 如何使用 Spring Data Pagination 在一页中获取所有结果

java - 什么是依赖注入(inject)和 Spring 框架?

spring - 如何在 Spring 中通过 XML 定义 MySql 数据源 bean

hibernate - java.lang.VerifyError : class net. sf.

java - 返回一个列表,我已经有一个rowmapper实现

java - 自定义 validator 消息 : Throwing exception in im