自整理手册Jersey Client API

本文介绍如何使用Jersey Client API进行RESTful服务的调用,包括创建客户端实例、配置参数、发送HTTP请求及处理响应等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值