Я звоню из jQGrid в сервлет Guice со следующей привязкой:
@Produces({MediaType.APPLICATION_JSON})
@Path("/{param}")
public String getJson(@PathParam("param") String param) {
...
return return json.toString();
}
Запрашивая URL-адрес напрямую, я вижу JSON. Когда jqgrid выполняет запрос, я получаю ответ 405: метод не разрешен. Я видел, как это происходило раньше, когда возвращаемая страница не имеет Content-type, установленного на «text/json» (здесь jqgrid не очень гибкий).
ВОТ ЗАПРОС: POST запроса значения ключа /myapp/json/jqgrid/json ... HTTP/1.1 x-requested-with XMLHttpRequest Accept-Language en-us Referer http://localhost:8080/myapp/myPage... Принять application/json, text/javascript, / Content-Type application/x -www-form-urlencoded Accept-Encoding gzip, deflate User-Agent Mozilla/5.0 (совместимый; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0) Host localhost:8080 Content-Length 63 Connection Keep-Alive Cache-Control нет -кэш
ВОТ ОТВЕТ: Значение ключа Ответ HTTP/1.1 405 Метод не разрешен Сервер Apache-Coyote/1.1 Разрешить GET, OPTIONS, HEAD Content-Type text/html;charset=utf-8 Content-Length 1034
Любые мысли о том, как заставить сервлет guice установить для Content-type значение «text/json» и разрешить ответ?
Content-type
для ответа JSON. ПравильныйContent-type
— это application/json. См. здесь - person Oleg   schedule 12.08.2011