Guice servlet 405 err: похоже, не установлен тип контента для «text / json» для MediaType.APPLICATION_JSON - PullRequest
0 голосов
/ 12 августа 2011

Я звоню из jQGrid сервлету Guice со следующей привязкой:

@Produces({MediaType.APPLICATION_JSON})
@Path("/{param}")
public String getJson(@PathParam("param") String param) {
    ...
    return return json.toString();
}

Запрашивая URL-адрес напрямую, я вижу JSON.Когда jqgrid выполняет запрос, я получаю метод 405, недопустимый ответ.Я уже видел это раньше, когда на возвращаемой странице не был установлен тип контента "text / json" (jqgrid здесь не очень гибок).

ЗДЕСЬ ЗАПРОС: Запрос значения ключа POST/ myapp / json / jqgrid / json ... HTTP / 1.1 x-запрашиваемый-с XMLHttpRequest Accept-Language en-us Referer http://localhost:8080/myapp/myPage... Принять приложение / json, текст / javascript, / Содержимое-Введите приложение / x-www-form-urlencoded Accept-Encoding gzip, дефлятируйте User-Agent Mozilla / 5.0 (совместимо; MSIE 9.0; Windows NT 6.1; WOW64; Trident / 5.0) Хост localhost: 8080 Длина содержимого 63 Длина соединения Keep-Alive Cache-Control no-cache

ЗДЕСЬ ОТВЕТ: Ответ значения ключа HTTP / 1.1 405 Метод не разрешен Сервер Apache-Coyote / 1.1 Разрешить GET, OPTIONS, HEAD Content-Type text / html; charset = utf-8 Content-Length 1034

Есть мысли о том, как заставить сервлет guice установить тип содержимого "text / json" и разрешить ответ?

1 Ответ

0 голосов
/ 15 августа 2011

Это решено.Я использовал аннотацию @GET, а jQGrid выпускал пост.Я изменил @POST, и он начал работать.Это может решить проблему для других, связанных с ошибками 405.

...