4

我正在使用 restful webservices 我有一个简单的代码,如下所示:

@Path("/v1/status")
public class ControllerServices 
{
    @GET
    @Produces(MediaType.TEXT_HTML)
    String printOnly()
    {
        System.out.println("running successfully");
        return "<p>this webservice</p>";
    }


}

我的web.xml文件是这样的:

    <servlet>
    <servlet-name>Jersey REST Service</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
      <param-name>com.sun.jersey.config.property.packages</param-name>
      <param-value>com.techbloomer.services</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
   <servlet-mapping>
    <servlet-name>Jersey REST Service</servlet-name>
    <url-pattern>/rest/*</url-pattern>
  </servlet-mapping>

当我要求

http://localhost:8080/webservicesForIndTadka/rest/v1/status

它给出的错误为

HTTP Status 405 - Method Not Allowed
type: Status report
message: Method Not Allowed
description: The specified HTTP method is not allowed for the requested resource.
4

5 回答 5

1

我见过类似的问题,当 GET 请求在标头中有 Content-Type 时,tomcat(在我的例子中是版本 7)返回错误代码 405。

于 2013-10-13T11:47:16.433 回答
0
@Path("/v1/status")
public class ControllerServices 
{
    @GET
    @Path("print")
    @Produces(MediaType.TEXT_HTML)
    public String printOnly()
    {
        System.out.println("running successfully");
        return "<p>this webservice</p>";
    }
}

类上的路径注释表明这是一个根资源类,并且给定的路径值指定了该类中包含的所有 Web 服务方法的基本 URI。

@GET 注释用于区分处理实际 Web 服务请求的子资源方法和返回将用于处理请求的对象的子资源定位器方法。在这种情况下,该方法具有 @GET 注释,这意味着该方法处理请求并返回结果。

如果你导航到http://localhost:8080/webservicesForIndTadka/rest/v1/status/print/你应该看到printOnly返回"<p>this webservice</p>".

使用 FireFox 并安装RESTClient

于 2013-10-13T11:35:28.603 回答
0
  1. 您的浏览器正在向 JAX-RS 服务发送不同的内容类型。

尝试

@Produces(
    {
        MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML
    })
  1. 你应该添加

以下

@Path("/get")

为了指定方法的路径,JAX-RS 可能使用了不同的东西。

于 2013-10-14T09:45:39.347 回答
0
http://localhost:8080/webservicesForIndTadka/rest/v1/status

我刚刚遇到了类似的问题,归结为请求中缺少 / 。在这种情况下,它将是

http://localhost:8080/webservicesForIndTadka/rest/v1/status/
于 2014-03-04T11:21:09.973 回答
0

嗨,我遇到了同样的问题,但已解决。

于 2015-10-14T07:47:02.273 回答