我有一个使用Jersey的非常简单的终端。我的网址是静态的,它不需要任何请求参数。它看起来像这样:Jersey返回HTTP状态405 - 不允许的方法
但是,每当我请求这个URL,我总是收到的405 HTTP状态码 - 不允许的方法。
奇怪的是,如果我更改了@Path
注释并定义了一个路径变量,例如@Path("/chart/{blah}")
它工作正常。
有没有人有一个想法,为什么我必须定义一个路径变量来获得这个工作?我不需要一个路径变量,添加一个来获得200响应似乎很愚蠢。
我有一个使用Jersey的非常简单的终端。我的网址是静态的,它不需要任何请求参数。它看起来像这样:Jersey返回HTTP状态405 - 不允许的方法
但是,每当我请求这个URL,我总是收到的405 HTTP状态码 - 不允许的方法。
奇怪的是,如果我更改了@Path
注释并定义了一个路径变量,例如@Path("/chart/{blah}")
它工作正常。
有没有人有一个想法,为什么我必须定义一个路径变量来获得这个工作?我不需要一个路径变量,添加一个来获得200响应似乎很愚蠢。
感谢您的建议。它最终成为我愚蠢地为我的球衣SpringServlet输入了不正确的url模式。这是/
,而不是/*
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
</servlet>
<url-pattern>/*</url-pattern>
<servlet-mapping>
<servlet-name>Chart Service</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
我想是因为你指定
@Produces(MediaType.APPLICATION_JSON).
1这是可能)也许你应该尝试运行在终端
curl -i -X GET -H 'Accept:application/json' http://localhost:8080/mydata
2以下)或尝试
@Produces({MediaType.APPLICATION_JSON, MediaType.TEXT_HTML})
感谢您的建议,不幸的是,这些仍然导致返回405。 – seedhead 2012-07-19 09:13:26
@seedhead对不起,你能再试一次吗?我意识到我复制并粘贴了错误的标题 – tanyehzheng 2012-07-19 09:33:57
变化注释类而不是方法:
@Path("/mydata")
public class MyClass(){
@GET
@Produces(javax.ws.rs.core.MediaType.APPLICATION_JSON)
public String getData() {
return "{'name': 'value'}";
}
}
我不知道为什么,但它也给了我的问题的其他方式
我很痛苦同样的问题; http://localhost:8080/mypath/myendpoint无法正常工作。
尝试在路径中添加“/ rest”,如http://localhost:8080/rest/mypath/myendpoint
请问您如何请求URL?例如 - 发布您尝试使用的实际URL。 – 2012-07-18 22:05:33
我正在使用的URL是:http:// localhost:8080/mydata – seedhead 2012-07-19 07:37:06