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

Java HTTP状态405-Rest API的方法不允许错误,java,rest,Java,Rest,我在做了一些研究之后问了这个问题。我确实遵循了针对此类错误给出的解决方案,但并不适用于我。下面的代码中有任何关于哪里出错的建议。我正在创建一个REST API,但是当我请求url时,它给了我405错误。下面是我请求的URI http://localhost:8080/Project/services/start/version 下面是代码片段 @Path("/start") public class StartService { @GET @Path("/version") @Pro

我在做了一些研究之后问了这个问题。我确实遵循了针对此类错误给出的解决方案,但并不适用于我。下面的代码中有任何关于哪里出错的建议。我正在创建一个REST API,但是当我请求url时,它给了我405错误。下面是我请求的URI

    http://localhost:8080/Project/services/start/version
下面是代码片段

@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;  }

}
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>

eLicensingWeb
JAX-RS REST
com.sun.jersey.spi.container.servlet.ServletContainer
com.sun.jersey.config.property.packages
com.cem.plc.service
1.
JAX-RS REST
/服务/*
index.jsp
@products({“text/plain”、“application/xml”、“application/json”)
将其更改为
@products(“text/plain”)
并尝试添加

@Produces({"image/jpeg,image/png"})


我也有这个问题,并能够通过在服务器上启用CORS支持来解决它。在我的例子中,它是一个Azure服务器,非常简单:

因此,请检查服务器的工作方式并启用CORS。我甚至不需要浏览器插件或代理:)

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


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

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

您是否使用HTTP GET访问URL?405通常意味着您要么在仅允许POST的内容上尝试GET,要么在需要POST的方法上尝试HTTP:https@Kevin:谢谢你的快速回复。我试过用post,但没有成功。Atless with GET它使用system.out.println在控制台中打印输出,但是使用POST它甚至没有在控制台中打印输出。我再次将其更改为GET,现在405错误消失了,但我在uri页面中看不到任何输出,正如在中一样,我仍然可以看到system.out.println在控制台中打印输出。任何关于405的建议都是由于您只在方法上定义了@GET。至于不返回任何内容,您使用什么来测试结果?也许您希望使用TDD来实现这一点,因为Jersey有自己的测试框架。还有,我想你用的是旧版的球衣。为什么?这个答案不能解释到底是什么错。请详细解释。请详细解释。我也有类似的问题。公认的答案表明这是一个
内容类型的问题。为什么您认为这是HTTP操作的一个问题?
@POST
@Path("/pdf")
@Consumes({ MediaType.MULTIPART_FORM_DATA })
@Produces({"image/jpeg,image/png"})
//@Produces("text/plain")
public Response uploadPdfFile(@FormDataParam("file") InputStream fileInputStream,@FormDataParam("file") FormDataContentDisposition fileMetaData) throws Exception {
    ...
}