加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

CXF Rest Client

发布时间:2020-12-17 01:10:03 所属栏目:安全 来源:网络整理
导读:接上一篇 http://sunbo1591.iteye.com/blog/765869 上篇说了怎么用cxf发布restful webservice,由于浏览器只能对该service发送http的GET请求,所以如果想对服务器上的数据,还需要实现客户端。 客户端的实现方式有无数种。。。可以是.net,c++,还有很多java框
接上一篇 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/? 查看结果。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读