Ошибка 406 в простом запросе с использованием Spring 3 и Jackson 1.9 - PullRequest
1 голос
/ 08 ноября 2011

Я создал простой тестовый пример с Jackson 1.9 и Spring 3. Моя цель состояла в том, чтобы проверить, насколько легко было использовать оба из них для генерации результатов JSON. Моя проблема в том, что я получаю ошибку 406

Пока что кажется, что вам нужно только настроить Spring, и код действительно прост. Мой конфигурационный файл Spring просто:

<context:component-scan base-package="com.goldengecko" />
<context:annotation-config/>
<mvc:annotation-driven />

И мой контроллер:

@Controller
public class TestsController
{
    @RequestMapping(value = "/tests", method=RequestMethod.GET)
    public @ResponseBody Item getBooks() {
        return new Item();
    }
}

Класс Item просто:

public class Item {
    private String name;

    public Item() {
        name = "Test name";
    }

    private String getName() {
        return name;
    }

    private void setName( String name ) {
        this.name = name;
    }   
}

Я убедился, что добавил jackson-core-asl.jar и jackson-mapper-asl.jar.

Из всего, что я прочитал, это просто так: вам не нужно беспокоиться об установке содержимого, принятого в запросе, просто откройте обычный браузер Chrome и запросите эту службу.

Вот где я получаю 406.

Я создал простой вызов jQuery getJSON с тем же результатом.

Вы знаете, что может быть не так? Пока что есть несколько вещей, которые можно потерпеть неудачу: код, кажется, является правильным подходом, и файлы Jackson, требуемые Spring, уже есть.

1 Ответ

0 голосов
/ 08 ноября 2011

В соответствии с разделом 10.4.7 в http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html:

Ресурс, идентифицированный запросом, способен генерировать только объекты ответа, которые имеют характеристики контента, неприемлемые согласно заголовкам принятия, отправленным в запросе.

Если это не запрос HEAD, ответ ДОЛЖЕН включать в себя объект, содержащий список доступных характеристик объекта и местоположений, из которых пользователь или пользовательский агент может выбрать наиболее подходящий.Формат объекта определяется типом мультимедиа, указанным в поле заголовка Content-Type.В зависимости от формата и возможностей пользовательского агента, выбор наиболее подходящего варианта МОЖЕТ выполняться автоматически.Однако эта спецификация не определяет какого-либо стандарта для такого автоматического выбора.

Примечание: серверам HTTP / 1.1 разрешено возвращать ответы, которые не являются приемлемыми, в соответствии с заголовками принятия, отправленными в запросе.В некоторых случаях это может быть даже предпочтительнее, чем отправка ответа 406.Пользовательским агентам рекомендуется проверять заголовки входящего ответа, чтобы определить, является ли он приемлемым.

Если ответ может быть неприемлемым, пользовательский агент ДОЛЖЕН временно прекратить получение дополнительных данных и запросить пользователярешение о дальнейших действиях.

Так что, возможно, вам нужно установить приемлемые типы контента на принимающей стороне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...