Jersey Client API

参考Jersey的文档http://jersey.java.net/nonav/documentation/latest/client-api.html
 
整理自己使用的手册,同时希望能给大家也带来便利
使用Jersey Client API的步骤
1.创建一个Client的实例
Java代码  收藏代码
  1. Client c = Client.create();  
 2.配置Client参数(通过getProperties方法或者一些setter方法)
Java代码  收藏代码
  1. c.getProperties().put(ClientConfig.PROPERTY_FOLLOW_REDIRECTS, true);  
  2. or  
  3. c.setFollowRedirects(true);  
  4. or  
  5. 在创建Client实例时利用ClientConfig配置参数  
  6. ClientConfig cc = new DefaultClientConfig();  
  7. cc.setFollowRedirects(true);  
  8. Client c = Client.create(cc);  
 3.创建完Client实例后,接下来就要获取一个WebResource实例
Java代码  收藏代码
  1. WebResource r = c.resource("http://localhost:8080/xyz");  
 4.建立一个请求(request)
建立对Web资源的请求需要使用builder pattern(RequestBuilder)和HTTP方法(UniformInterface)
Java代码  收藏代码
  1. String response = r.accept(MediaType.APPLICATION_JSON_TYPE,MediaType.APPLICATION_XML_TYPE)  
  2.                 .header("X-FOO""BAR")  
  3.                 .get(String.class);  
 这段代码:发送了一个Get请求,带有一个Accept header( application/json, application/xml)和一个非标准的header(X-FOO of BAR)如果一个请求需要获取一个entity or representation则需要调用HTTP方法的PUT、POST、DELETE
Java代码  收藏代码
  1. String request = "content";  
  2. String response = r.accept(MediaType.APPLICATION_JSON_TYPE,MediaType.APPLICATION_XML_TYPE)  
  3.                 .header("X-FOO""BAR")  
  4.                 .post(String.class, request);  
 这里的String "content"被序列化成一个request entity。除了此方法,也可用type builder方法来声明request entity的Content-Type
Java代码  收藏代码
  1. String response = r.accept(MediaType.APPLICATION_JSON_TYPE,MediaType.APPLICATION_XML_TYPE)  
  2.                 .header("X-FOO""BAR")  
  3.                 .type(MeidaType.TEXT_PLAINT_TYPE)  
  4.                 .post(String.class, request);  
 or 使用entity方法去声明entity和type
Java代码  收藏代码
  1. String response = r.accept(MediaType.APPLICATION_JSON_TYPE,MediaType.APPLICATION_XML_TYPE)  
  2.                 .header("X-FOO""BAR")  
  3.                 .entity(request, MediaType.TEXT_PLAIN_TYPE)  
  4.                 .post(String.class, request);  
 5.接受响应
如果有需要一个response meta-data,可以声明一个ClientResponse去获取一个响应的status,header,entity
Java代码  收藏代码
  1. ClientResponse response = r.get(ClientResponse.class);  
  2. EntityTag e = response.getEntityTag();  
  3. String entity = response.getEntity(String.class);  
 如果没有使用ClientResponse,并且响应状态>=300,那么就会抛出一个runtime exception UniformInterfaceException
Java代码  收藏代码
  1. try {  
  2.         String entity = r.get(String.class);  
  3. catch (UniformInterfaceException ue) {  
  4.         ClientResponse response = ue.getResponse();  
  5. }  
 6.在现有WebResouce基础上创建新的WebResouce
通过传入新的URI,可以在一个已存在的WebResource上在创建请求前创建一个新的WebResource
Java代码  收藏代码
  1. WebResource r = c.resource("http://localhost:8080/xyz");  
  2. MultivalueMap<String, String> params = new MultivalueMapImpl();  
  3. param.add("foo""x");  
  4. param.add("bar""y");  
  5. String response = r.path("abc").queryParams(param).get(String.class);  
 这段代码对URI"http://localhost:8080/xyz/abc?foo=x&bar=y"申请一个GET请求
7.representations的java实例和类型
Jersey server端支持的java类型在client端同样适用,包括JAX-RS支持的ava类型(bytes[], String, InputStream, Reader, File, javax.activation.DataSource, javax.xml.transform.Source, StreamingOoutput)和jersey支持的JSON, ATOM和Multipart MIME

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值