在做了一些研究之后问了这个问题。我确实遵循了这种错误给出的解决方案,但对我没有用。以下代码中出现错误的任何建议。我正在创建一个REST API但是当我请求url时它给了我405错误.Below是我要求的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>
答案 0 :(得分:5)
@Produces({"text/plain","application/xml","application/json"})
将此更改为@Produces("text/plain")
并尝试
答案 1 :(得分:0)
添加
@Produces({"image/jpeg,image/png"})
到
@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 {
...
}
答案 2 :(得分:0)
我也有这个问题,并且能够通过在服务器上启用CORS支持来解决它。就我而言,它是一个Azure服务器,很简单:Enable CORS on Azure
请检查您的服务器的工作原理并启用CORS。我甚至不需要浏览器插件或代理:)
答案 3 :(得分:0)
在上面的代码变量“ ver”中分配了空值,在返回之前打印“ ver”并查看该值。由于此具有空服务的“ ver”被发送为“ 204 No Content”。
关于状态代码“ 405-不允许的方法”将在其余控制器或服务仅支持GET方法但从客户端尝试使用有效uri请求进行POST时获得此状态代码,在这种情况下,状态为“ 405-不允许的方法”
答案 4 :(得分:0)
您可能正在对GET操作进行PUT调用 请检查一次