我在REST服務中很新,在過去的兩週中我遇到了問題。我正在使用澤西島。我正在嘗試使用簡單的REST客戶端來調用POST方法,該方法接受JSON對象作爲參數並將其存儲到數據庫中。我的方法不起作用,但我決定走一步,所以現在我使用更簡單的客戶端和更簡單的提供者,以便測試我的POST和GET方法。奇怪的是,雖然我能夠調用POST方法:REST服務 - @POST調用在@GET不可用時工作
@POST
@Path("/store")
@Consumes(MediaType.TEXT_PLAIN)
@Produces(MediaType.TEXT_PLAIN)
public String storeData(String str) throws SQLException {
String query = "insert into myDB.test (id, name) values ('1', '" + str + "')";
MyDB db = new MyDB();
db.runQuery(query);
return responseCode.toString();
}
這工作得很好!
但在同一個類中,@GET方法不起作用並返回404錯誤。 我的代碼如下:
@GET
@Path("/retrieve")
@Produces(MediaType.TEXT_PLAIN)
public String getResponse() {
return "Hello!";
}
我知道我的問題可能是很簡單的多......但我試圖找出我做錯了什麼,從而去到我的實際執行...
非常感謝。
濱海
這裏是我的客戶端代碼
public class TestClient {
public static void main(String[] args) {
ClientConfig clientConfig = new DefaultClientConfig();
Client client = Client.create(clientConfig);
WebResource webResource = client.resource("http://localhost:8080/server_classes/rest/server/retrieve");
System.out.println(webResource.accept(MediaType.TEXT_PLAIN).post(ClientResponse.class, "hello"));
}
}
這裏是我的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>server_classes</display-name>
<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>server_classes</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>
</web-app>
我的包被命名爲server_classes和資源的路徑是@Path(「/ server」)
我從一開始就再次嘗試了vogella教程,只是改變了註釋路徑和方法(不僅僅給出了「Hello Jersey」響應)。但現在,我無法運行任何東西。只有404錯誤!
O也刪除了Tomcat的實例,然後整個tomcat安裝並重新安裝它,問題依舊。我正在使用Ubuntu 12.04,如果這有幫助..
謝謝!
你想與你的GET請求訪問哪個網址?什麼是您的類的基本URL和web.xml中定義的REST資源的上下文路徑?在不相關的說明中,您的應用程序很容易受到SQL注入攻擊。可以傳遞一個像'''somename'); DROP TABLE myDB.test;「'這樣的字符串給你的服務,可能會搞亂數據庫或從潛在的任何表中竊取數據。即使它只是一個佔位符,我也可以清楚地聽到這種潛伏,恐怖的尖叫聲。 – toniedzwiedz 2012-08-06 20:45:24
問題不在URL中,web.xml文件中都沒有。我已經檢查了很多次,以確保所有內容格式正確。此外,我嘗試使用路徑(「somepath」)方法或使用字符串「絕對路徑」來格式化URL(從客戶端)。沒有......顯然,目前,問題不在於配置數據庫(因爲代碼永遠不會到達那裏),而是服務器端!我無法弄清楚... – Stoup 2012-08-06 20:53:02
請附上您的客戶端代碼片段。 – 2012-08-07 09:21:39