CXF發布restful WebService的入門例子(客戶端)


上篇說了怎么用cxf發布restful webservice,由於瀏覽器只能對該service發送http的GET請求,所以如果想對服務器上的數據,還需要實現客戶端。 
客戶端的實現方式有無數種。。。可以是.net,c++,還有很多java框架甚至socket。這里用cxf給的一個WebClient類來實現: 

package com.client;  
  
import org.apache.cxf.jaxrs.client.WebClient;  
  
import com.DAO.Room;  
  
public class Client {  
    static WebClient client;  
  
    public static void main(String[] args) {  
        client = WebClient.create("http://localhost:9999/");  
        put();  
    }  
  
    static void get() {  
        Room room = client.path("roomservice/room/001")  
                .accept("application/xml").get(Room.class);  
        System.out.println("get the room which id is:" + room.getId());  
    }  
  
    static void post() {  
        Room room = new Room();  
        room.setId("003");  
        client.path("roomservice/room").accept("application/xml")  
                .post(room, Room.class);  
    }  
  
    static void delete() {  
        client.path("roomservice/room/002").accept("application/xml").delete();  
    }  
  
    static void put() {  
        Room room = new Room();  
        room.setId("006");  
        client.path("roomservice/room/003").accept("application/xml").put(room);  
    }  
}

這個類用起來很簡單,給WebClient的靜態方法create一個參數,該參數是服務器地址的字符串。 

client.path("roomservice/room/001").accept("application/xml").get(Room.class); 

這句代碼,是告訴client要訪問的restful資源,以及格式,最后的get,也就是對這個資源發送一個http GET請求,參數Room.class是告訴client要以什么方式接受服務器發送來的response。(服務器端和客戶端的格式應該一致,所以這里用的和服務器端用的是一個POJO,如果客戶端不是用CXF,那么應該定義一個scheme,這樣才能讓雙方明白來回發送的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/  查看結果。 

 

轉自 http://borissun.iteye.com/blog/766029


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM