微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CXF Rest Client

上一篇 http://sunbo1591.iteye.com/blog/765869

上篇说了怎么用cxf发布restful webservice,由于浏览器只能对该service发送http的GET请求,所以如果想对服务器上的数据,还需要实现客户端。
客户端的实现方式有无数种。。。可以是.net,c++,还有很多java框架甚至socket。这里用cxf给的一个WebClient类来实现:
Java代码  

收藏代码

  1. package com.client;  
  2.   
  3. import org.apache.cxf.jaxrs.client.WebClient;  
  4.   
  5. import com.DAO.Room;  
  6.   
  7. public class Client {  
  8.     static WebClient client;  
  9.   
  10.     public static void main(String[] args) {  
  11.         client = WebClient.create("http://localhost:9999/");  
  12.         put();  
  13.     }  
  14.   
  15.     static void get() {  
  16.         Room room = client.path("roomservice/room/001")  
  17.                 .accept("application/xml").get(Room.class);  
  18.         System.out.println("get the room which id is:" + room.getId());  
  19.     }  
  20.   
  21.     static void post() {  
  22.         Room room = new Room();  
  23.         room.setId("003");  
  24.         client.path("roomservice/room").accept("application/xml")  
  25.                 .post(room, Room.class);  
  26.     }  
  27.   
  28.     static void delete() {  
  29.         client.path("roomservice/room/002").accept("application/xml").delete();  
  30.     }  
  31.   
  32.     static void put() {  
  33.         Room room = new Room();  
  34.         room.setId("006");  
  35.         client.path("roomservice/room/003").accept("application/xml").put(room);  
  36.     }  
  37. }  
这个类用起来很简单,给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/  查看结果。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐