2012-07-18 184 views
16

我有一个使用Jersey的非常简单的终端。我的网址是静态的,它不需要任何请求参数。它看起来像这样:Jersey返回HTTP状态405 - 不允许的方法

​​

但是,每当我请求这个URL,我总是收到的405 HTTP状态码 - 不允许的方法。

奇怪的是,如果我更改了@Path注释并定义了一个路径变量,例如@Path("/chart/{blah}")它工作正常。

有没有人有一个想法,为什么我必须定义一个路径变量来获得这个工作?我不需要一个路径变量,添加一个来获得200响应似乎很愚蠢。

+1

请问您如何请求URL?例如 - 发布您尝试使用的实际URL。 – 2012-07-18 22:05:33

+0

我正在使用的URL是:http:// localhost:8080/mydata – seedhead 2012-07-19 07:37:06

回答

10

感谢您的建议。它最终成为我愚蠢地为我的球衣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> 
3

我想是因为你指定

@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}) 
+1

感谢您的建议,不幸的是,这些仍然导致返回405。 – seedhead 2012-07-19 09:13:26

+0

@seedhead对不起,你能再试一次吗?我意识到我复制并粘贴了错误的标题 – tanyehzheng 2012-07-19 09:33:57

4

变化注释类而不是方法:

@Path("/mydata") 
public class MyClass(){ 

@GET 
@Produces(javax.ws.rs.core.MediaType.APPLICATION_JSON) 
public String getData() { 
    return "{'name': 'value'}"; 
} 

} 

我不知道为什么,但它也给了我的问题的其他方式

相关问题