【问题标题】:Jersey returns HTTP Status 405 - Method Not AllowedJersey 返回 HTTP 状态 405 - 不允许的方法
【发布时间】:2012-07-18 01:25:12
【问题描述】:

我有一个使用 Jersey 的非常简单的端点。我的 URL 是静态的,它不需要任何请求参数。它看起来像这样:

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

但是,每当我请求此 URL 时,我总是会收到 HTTP 状态代码 405 - 方法不允许。

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

有谁知道为什么我必须定义一个路径变量才能让它工作?我不需要路径变量,添加一个只是为了获得 200 响应似乎很愚蠢。

【问题讨论】:

  • 您如何请求 URL?例如- 发布您尝试使用的实际 URL。
  • 我使用的网址是:localhost:8080/mydata

标签: java tomcat jersey jax-ws


【解决方案1】:

感谢您的建议。结果是我愚蠢地为我的球衣 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>

【讨论】:

    【解决方案2】:

    注释类而不是方法:

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

    我不知道为什么,但反过来也给我带来了麻烦

    【讨论】:

      【解决方案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})
      

      【讨论】:

      • 感谢您的建议,不幸的是,这两种方法仍然导致返回 405。
      • @seedhead 抱歉,你能再试试方法 1 吗?我意识到我复制并粘贴了错误的标题
      【解决方案4】:

      此类问题的另一个可能来源:要非常注意所有参数和注释。我遇到了这样的问题,当我用 POST 调用一个方法时,它被 @PUT 注释了

      【讨论】:

        【解决方案5】:

        我遇到了同样的问题; http://localhost:8080/mypath/myendpoint 不工作。

        尝试在路径中添加“/rest”,如http://localhost:8080/rest/mypath/myendpoint

        【讨论】:

          猜你喜欢
          • 2016-11-04
          • 1970-01-01
          • 2020-12-15
          • 2017-06-15
          • 2021-06-04
          • 2021-09-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多