RestEasy 调用Rest接口使用详解
来源:互联网 发布:中科院软件研究所待遇 编辑:程序博客网 时间:2024/04/29 18:18
最近项目中需要调用其他项目的Rest接口,之前一直在使用Apache的httpclient工具,该工具使用起来不是很方便,各种try{......} catch{......}结构,造成了代码量很大,而且有实际意义的代码却很少。
最近请教别人,学习使用RESTEasy工具,进行调用REST接口,极大地减少了调用Rest接口的代码,项目中仅需要一个RestEasyClient.java工具类即可,其他package中是需要调用REST接口时,仅需要直接调用即可,代码中仅有一个try{......} catch{......},很好的维护了项目代码的整洁和实用。
1.实战
RESTEasy的Maven依赖:
<dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>jaxrs-api</artifactId> <version>3.0.7.Final</version> </dependency> <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-jaxrs</artifactId> <version>3.0.19.Final</version> <!--<scope>provided</scope>--> </dependency> <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-client</artifactId> <version>3.0.19.Final</version> </dependency> <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-multipart-provider</artifactId> <version>3.0.19.Final</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-jackson2-provider</artifactId> <version>3.0.19.Final</version> </dependency> <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-servlet-initializer</artifactId> <version>3.0.19.Final</version> </dependency>
RestEasyClient.java工具类:
import lombok.extern.slf4j.Slf4j;import org.apache.commons.collections.MapUtils;import org.apache.commons.lang3.StringUtils;import org.jboss.resteasy.client.jaxrs.ResteasyClient;import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder;import org.jboss.resteasy.client.jaxrs.ResteasyWebTarget;import javax.ws.rs.client.Entity;import javax.ws.rs.client.Invocation;import javax.ws.rs.core.Response;import java.util.Map;/** * Created by zhangzh on 2016/12/28. */@Slf4j //此处用到了lombokpublic class RestEasyClient { /** * * @param url url地址参数 * @return */ public static Response get(String url) { ResteasyClient client = new ResteasyClientBuilder().build(); try { ResteasyWebTarget target = client.target(url); Invocation.Builder builder = target.request(); return builder.get(); } catch (Exception e) { log.error("RESTEasyClient.post() Error, url:{}", url); log.error("RESTEasyClient.post() Error", e); return Response.serverError().build(); } } /** * * @param url url地址参数 * @param headers 请求中的header参数 * @param entity 请求的具体参数内容 * @param mediaType 之情请求的类型,如json * @return */ public static Response post(String url, Map<String, Object> headers, Object entity, String mediaType) { log.info("RESTEasyClient.post() INFO, url:{}, headers:{}, entity:{}, mediaType:{}", url, headers, entity, mediaType); ResteasyClient client = new ResteasyClientBuilder().build(); Response response; try { ResteasyWebTarget target = client.target(url); Invocation.Builder builder = target.request(); if (null != headers && !headers.isEmpty()) { headers.entrySet().forEach(entry -> builder.header(entry.getKey(), entry.getValue())); } response = builder.post(Entity.entity(entity, mediaType)); return response; } catch (Exception e) { log.error("RESTEasyClient.post() Error, url:{}, headers:{}, entity:{}, mediaType:{}", url, headers, entity, mediaType); log.error("RESTEasyClient.post() Error", e); return Response.serverError().build(); } }}
Test类
Test.java
public class Test { public static void main(String[] args) {//get test Response response = RestEasyClient.get("http://10.118.32.254:8801/data/rest/"); log.info("response:{}",response); //post testMap<String, Object> header = Maps.newHashMap(); header.put("userId", "1000"); Object item = new Object(); Response response = RestEasyClient.post("http://10.118.32.254:8801/data/rest/", header, Sets.newHashSet(item), MediaType.APPLICATION_JSON); log.info("response:{}", ToStringBuilder.reflectionToString(response));}}
0 0
- RestEasy 调用Rest接口使用详解
- Rest接口调用工具使用
- RESTEasy-Rest服务框架
- JQuery调用Rest服务接口
- rest 调用有参数接口
- JAVA调用Rest服务接口
- js ajax调用rest接口
- RestEasy 使用
- Resteasy的rest url配置
- 调用ejb+Resteasy的rest服务报错:Could not find MessageBodyWriter
- 利用resteasy框架构建rest webservice----第五波:java代码调用乱码解决方案
- 利用resteasy框架构建rest webservice----第五波:java代码调用乱码解决方案
- 使用 web.rest 调用 REST API
- 使用Jersey构建rest接口
- 使用cURL调试REST接口
- Neo4j的Rest接口使用
- JavaScript+Html 调用Wcf Rest Api接口
- JQuery跨域调用Rest服务接口
- JAVA移位运算与进制转换
- 历届国际信息奥林匹克地址与结果
- 一创建和销毁对象
- Ajax 完整教程-(一)
- javascript 学习指南--语法
- RestEasy 调用Rest接口使用详解
- 机票项目总结
- 从 URL 输入到页面展现发生了什么?(What really happens when you navigate to a URL)
- Deserialize JSON / NSDictionary to Swift objects 将JSON 或Dic转为类对象
- 算法竞赛入门习题2-3倒三角
- Android第十九课;监听ListView列表项点击事件及滚动事件
- WARN [com.opensymphony.xwork2.ognl.OgnlValueStack] - Could not find property [org.apache.catalina.js
- HDU 2639 Bone Collector II (01背包求第K优解)
- CCF 中间数解析