HTTP状态405 - Rest API的方法不允许错误

use*_*894 21 java rest

在做了一些研究之后我问了这个问题.我确实遵循了这种错误给出的解决方案,但对我没有用.在下面的代码中出现错误的任何建议.我正在创建一个REST API但是当我请求url时它给了我405错误.Below是请求的URI.

    http://localhost:8080/Project/services/start/version
Run Code Online (Sandbox Code Playgroud)

以下是代码段.

@Path("/start")

public class StartService {
@GET
@Path("/version")
@Produces({"text/plain","application/xml","application/json"})
public String getVersion() {
    String ver="";

    try{


          Runtime rt = Runtime.getRuntime();
          Process pr = rt.exec("C:\\server\\dgr -v" );

          BufferedReader stdInput = new BufferedReader(new InputStreamReader
(pr.getInputStream()));
          BufferedReader input = new BufferedReader(stdInput);
         // String ver ="";
          StringBuffer verOutput = new StringBuffer();
                while((ver =  input.readLine()) != null){
                    verOutput.append(ver + "\n");
                    System.out.println(ver);
                }


        }catch (Throwable t)  
          {  
            t.printStackTrace();  
          }  


        finally {  

        }
    return ver;  }

}
Run Code Online (Sandbox Code Playgroud)

web.xml中:

<web-app 
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">

<servlet>
<display-name>eLicensingWeb</display-name>      
    <servlet-name>JAX-RS REST</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.cem.plc.service</param-value>
    </init-param>

    <load-on-startup>1</load-on-startup>
</servlet>




<servlet-mapping>
    <servlet-name>JAX-RS REST</servlet-name>
    <url-pattern>/services/*</url-pattern>
</servlet-mapping>


<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>


</web-app>
Run Code Online (Sandbox Code Playgroud)

小智 22

您可能正在为 GET 操作执行 PUT 调用,请检查一次


小智 6

__CODE__改变这个__CODE__并尝试,

  • 为什么?这个答案并不能解释究竟是什么问题. (61认同)
  • 请详细解释 (3认同)

小智 6

在上面的代码中,变量“ver”被分配为null,在返回之前打印“ver”并查看值。由于此“ver”具有空服务,因此发送状态为“204 无内容”。

关于状态代码“405 - 不允许的方法”,当其余控制器或服务仅支持 GET 方法但从客户端尝试使用有效 uri 请求的 POST 时,将获得此状态代码,在这种情况下,获取状态为“405 - 不允许的方法” ”