0

我正在从 jQGrid 调用具有以下绑定的 Guice servlet:

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

直接请求url,可以看到json。当 jqgrid 执行请求时,我得到 405 method not allowed response。当返回页面没有将 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 ... Accept 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)主机 localhost:8080 Content-Length 63 Connection 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 servlet 将 Content-type 设置为“text/json”并允许响应的任何想法?

4

1 回答 1

0

这个解决了。我正在使用@GET 注释,而 jQGrid 正在发布一个帖子。我更改了@POST,它开始工作。这可能会解决其他有相关 405 错误的问题。

于 2011-08-15T01:15:52.937 回答