接上一篇 http://sunbo1591./blog/765869
上篇說了怎么用cxf發(fā)布restful webservice,由于瀏覽器只能對該service發(fā)送http的GET請求,所以如果想對服務器上的數據,還需要實現(xiàn)客戶端。 客戶端的實現(xiàn)方式有無數種。。??梢允?net,c++,還有很多java框架甚至socket。這里用cxf給的一個WebClient類來實現(xiàn):
這個類用起來很簡單,給WebClient的靜態(tài)方法create一個參數,該參數是服務器地址的字符串。 client.path("roomservice/room/001") .accept("application/xml").get(Room.class); 這句代碼,是告訴client要訪問的restful資源,以及格式,最后的get,也就是對這個資源發(fā)送一個http GET請求,參數Room.class是告訴client要以什么方式接受服務器發(fā)送來的response。(服務器端和客戶端的格式應該一致,所以這里用的和服務器端用的是一個POJO,如果客戶端不是用CXF,那么應該定義一個scheme,這樣才能讓雙方明白來回發(fā)送的XML應該怎么處理,暫時也沒深入,回頭再研究。) DELETE方法很好理解,就是把你指定的資源刪除掉,所以delete()不用帶參數。 POST,PUT方法有點不同, post(Object body, Class<Room> ) put(Object body, Class<Room> ) 第一參數是你要傳給服務器的POJO,第二個參數是告訴client要將server返回的response轉化為的POJO的類型。第二個參數可以不寫,如果不寫,收到的將是一個response。 調用這些操作后,可以通過http://localhost:9999/roomservice/room/ 查看結果。 |
|