我跟着一個非常好的教程,它可以很好地支持了GET
HTTP方法,但由於某些原因,當我嘗試訪問POST
或PUT
方法服務器返回:RESTful Web服務日食
HTTP狀態405 - 不允許的方法
所以這是我在本教程一樣,
- 我創建了一個新的動態Web PROJ ECT
- 我進口的球衣REST風格的實施
- 我創建了一個新的Java類,並設置一些球衣註釋
- 我編輯的web.xml文件爲它創建一些州開始了一個servlet設置和點它給我的Java類映射它。
就是這樣,我在tomcat 6應用服務器上運行了應用程序。
所以,當我沿着我的班級的路徑,因此我的@GET
方法工作順利,但是當我試圖用@POST
代替@GET
註釋時,它返回上述錯誤。
的web.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web- app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>RESTfulTest</display-name>
<servlet>
<servlet-name>NAME</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.RESTful.Test</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>NAME</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
我的Java類的球衣註釋:
package com.RESTful.Test;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("/resttest")
public class Test {
//this WORKS!
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getTestString()
{
return "Hello this is a test post";
}
//this returns the error
@POST
@Produces(MediaType.TEXT_PLAIN)
public String getTestString2()
{
return "Hello this is a test post";
}
//this returns the error
@PUT
@Path("{param1}")
@Produces(MediaType.TEXT_PLAIN)
public String getTstWithInput(@PathParam("/param1")
String param)
{
return "hello "+param;
}
//this returns the error
@PUT
@Path(value="/putTest")
@Produces(MediaType.TEXT_PLAIN)
public String getTstWithInput2(@PathParam("/param1")
String param)
{
return "hello "+param;
}
}
請注意,我已經嘗試了所有的記錄,但我有相同的結果測試方法。我知道我不能同時運行他們中的一些,他們都只是測試。
我從URL調用REST資源:
的 「http://本地主機/ RESTfulTest/REST/resttest /」
的「http://本地主機/ RESTfulTest /休息/ resttest/MYNAME」
的 「http://本地主機/ RESTfulTest/REST/resttest/putTest」
你打電話給你的休息資源如何? – FUD
請告訴確切的細節,只需在瀏覽器中粘貼http:// localhost/RESTfulTest/rest/resttest/putTest就會發出GET請求,這將返回405錯誤。一個常用的工具是curl ..「curl -XPUT http:// localhost/RESTfulTest/rest/resttest/putTest」 – FUD
謝謝你,我還以爲瀏覽器發送帖子以及!再次感謝你 – Alejandro