• 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

  • 相关阅读:
    Dockershim 即将被移除?看 SUSE Rancher 的应对之道!
    使用 Rancher 进行首次金丝雀部署
    cOStoolkit:Container OS 的下一程
    如何在 K3s 中启用 Traefik Dashborad
    如何使用 Rancher Desktop 访问 Traefik Proxy 仪表板
    如何使用国内资源在 RKE2 上安装 Rancher HA
    Rancher 2.6 全新 Logging 快速入门
    实用教程 | 云原生安全平台 NeuVector 部署
    一文玩儿转 Rancher Desktop
    学多少年才算“精通Java”?
  • 原文地址:https://www.cnblogs.com/ggjucheng/p/3352494.html
Copyright © 2020-2023  润新知