創建RESTful Web服務客戶端似乎有大約澤西1.x中創建RESTful客戶的例子很多,但不澤西2.0或以上。 我提到了其他問題和澤西島的網站,但由於澤西島2.0和以前版本之間的差異,我仍然無法爲REST創建客戶端。 所以我想問一些建議。如何通過Jersey2.0以上
到目前爲止,我的編碼是這樣的。
ClientConfig config = new ClientConfig();
Client client = ClientBuilder.newClient(config);
WebTarget target = client.target("http://localhost:8080/CustomerBack2211/webresources/entities.customer");
Invocation.Builder invocationBuilder = target.request(MediaType.TEXT_XML_TYPE);
Response response = invocationBuilder.get();
System.out.println(response.getStatus());
System.out.println(response.readEntity(String.class));
這產生了406錯誤。但是,當我試圖通過Glassfish服務器測試RESTful服務時,測試工作正常,並且服務器端類的@GET方法具有@Produces({「application/xml」,「application/json」}) 。 所以我不明白爲什麼上面的代碼在Java應用程序中產生了406錯誤。
(通過以下方式,即客戶端已經@GET方法)
@GET
@Path("{id}")
@Produces({"application/xml", "application/json"})
public Customer find(@PathParam("id") Integer id) {
return super.find(id);
}
@GET
@Override
@Produces({ "application/xml"})
public List<Customer> findAll() {
return super.findAll();
}
有任何影響,你看到我做錯了什麼,或者你可以請提出一個RESTful客戶端的例子嗎? 任何建議將有所幫助......提前致謝!
此外,我會很感激,如果你將提供有關如何調用像GET方法,PUT和適當的參數刪除。 當我在Glassfish RESTful測試中測試服務器端類時,我只需要輸入一個ID號(即整數值)。但是,似乎我需要將「類」和/或「實體」值設置爲參數,但我無法在澤西島網站上看到與它們相關的任何信息。
非常感謝您的建議。 現在我可以理解它生產了406個。 你能告訴更多關於你的建議的最後2行嗎? – Hiroki 2014-12-04 09:25:22
我試圖通過導入「customerEnd.Customer;」來使用「客戶」類。 這是一個在服務器端製作的包,包含「客戶」類。 導入此軟件包不會導致任何錯誤,可能是因爲我已將服務器端類的WAR文件添加到此客戶端。 但是,在構建項目後,它會產生錯誤。 這將是必要的,使用這個類,所以你看到什麼我需要做的導入這個包? – Hiroki 2014-12-04 09:30:11
你的'@ Path'是'@Path(「{id}」)''。在你想獲得id的路徑段值的方法中。我要說的是,這個請求應該以該ID結束,因爲你可以在該方法中使用它。像'http://..../ customers/1',其中'1'是傳遞給方法的id。 – 2014-12-04 09:32:44