java rest httpclient_java http请求建议使用webClient,少用RestTemplate,不用HttpClient
简介:
webClient:是Spring-webFlux包下的,非阻塞响应,最低java8支持函数式编程,性能好
RestTemplate:是Spring-webmvc包下的,满足RestFul原则,代码简单,默认依赖jdk的HTTP连接工具。
HttpClient:是apache httpClient包下的,代码复杂,需要资源回收。
一、webClient get代码如下:(非常简单)
//create()创建一个WebClient的实例
//get()等选择调用方式为get
//uri()指定需要请求的路径
//retrieve()用来发起请求并获得响应
//bodyToMono(String.class)用来指定请求结果需要处理为String,并包装为Reactor的Mono对象。
Monoresponse = WebClient.create().get().uri("http:localhost:8080/rest/testGetHeader").retrieve().bodyToMono(String.class);
return response.block();
二、RestTemplate get代码如下:(简单)
1、先在启动类注册:
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
2、注入 RestTemplate 对象后使用getForObject即可(简单get请求),还有postForObject(),put(),delete()等方法。
restTemplate.getForObject(uri, Object.class);
三、HttpClient get代码如下:(复杂,不推荐使用)
try{
CloseableHttpClient client = HttpClients.createDefault();
HttpGet httpGet = new HttpGet(url);
//设置头信息
httpGet.setHeader(*, *);
HttpResponseresponse response = client.execute(httpGet);
if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
return (String)new ObjectMapper().readValue(response.getEntity().getContent(), String.class);
}else{
throw new Exception("请求失败,返回状态:"+response.getStatusLine().getStatusCode());
}
}catch(Exception e){
log.error("发送http错误 " + e);
throw e;
}finally{
try {
client.close();
} catch (IOException e) {
log.error("发送http错误 " + e);
throw e;
}
}
java rest httpclient_java http请求建议使用webClient,少用RestTemplate,不用HttpClient相关推荐
- 编写高质量代码:改善Java程序的151个建议(第9章:多线程和并发___建议125~131)
建议125:优先选择线程池 建议126:适时选择不同的线程池来实现 建议127:lock与synchronized是不一样的 建议128:预防线程死锁 建议129:适当设置阻塞队列的长度 建议130: ...
- 编写高质量代码改善java程序的151个建议——[110-117]异常及Web项目中异常处理
编写高质量代码改善java程序的151个建议--[110-117]异常及Web项目中异常处理 原创地址:http://www.cnblogs.com/Alandre/(泥沙砖瓦浆木匠),需要转载的,保 ...
- HttpUtils工具类 java程序 发起 网络请求
HttpUtils工具类 用于java程序 发起 网络请求 @Slf4j public class OkHttpUtils {private static final String HTTP_JSON ...
- 编写高质量代码:改善Java程序的151个建议 (第1章 Java开发中通用的方法和准则)
第1章 Java开发中通用的方法和准则 The reasonable man adapts himself to the world;the unreasonable one persists in ...
- 转载:一位资深程序员大牛给予Java初学者的学习路线建议
一位资深程序员大牛给予Java初学者的学习路线建议 java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来 ...
- Java异常机制及异常处理建议
Java异常机制及异常处理建议 参考文章: (1)Java异常机制及异常处理建议 (2)https://www.cnblogs.com/wangxilei/p/9522259.html 备忘一下.
- java 向nodejs 发送请求简单案例
java 向nodejs 发送请求简单案例 最近在做nodejs的东西,一直不明白java如何与nodejs建立连接,下面写了一个简单demo: nodejs端: var http = requir ...
- java 151建议_编写高质量代码改善java程序的151个建议——导航开篇
前言 系列文章: 下个星期度过这几天的奋战,会抓紧java的进阶学习.听过一句话,大哥说过,你一个月前的代码去看下,惨不忍睹是吧.确实,人和代码一样都在成长,都在变好当中.有时候只是实现功能的编程,长 ...
- java http请求 乱码_怎么解决java中的http请求乱码
怎么解决java中的http请求乱码 发布时间:2020-06-23 20:00:11 来源:亿速云 阅读:90 作者:元一 怎么解决java中的http请求乱码?针对这个问题,今天小编总结了这篇文章 ...
最新文章
- ggtree美颜进化树-宏基因组扩增子
- 【Scratch】青少年蓝桥杯_每日一题_2.01_画五角星
- 2021-10-11 程序人生 -感想随笔
- C++的cin和cout取消同步
- 数据库系统的体系结构知识笔记
- 人工智能 量子力学 时间简史 山海经 三体
- IDC:2021年全年中国市场折叠屏产品规模约150万台
- 面试题 01.07. 旋转矩阵
- 获取Button脚本挂载的事件名
- 全国计算机应用能力三个模块,全国专业技术人员计算机应用能力考试科目模块Word...
- uiautomator2遍历子元素
- canvas-缤纷小球
- 用python爬取隐藏内容_人民日报点赞北大保安小哥,自学Python后,人生开挂了!...
- ibm tivoli_通过IBM Tivoli Access Manager WebSEAL单一登录到IBM WebSphere Portal
- 使用pandas读取excel表格如何去掉标题
- AcWing - 求组合数 III(lucas逆元)
- FPGA实现开根号,仿真通过,算一次需要34个时钟周期
- 常用设计模式-策略模式+工厂模式+模板模式(使用场景、解决方案)
- pd.melt() vs reshape2::melt()
- 樱花FRP内网穿透登录群晖相册ds photo
热门文章
- SpringBoot-web开发(一): 静态资源的导入(源码分析)
- MinkowskiEngine Miscellaneous Classes杂类
- PyTorch中的MIT ADE20K数据集的语义分割
- AttributeError: module ‘os‘ has no attribute ‘mknod‘
- CoordinatorLayout 的jar包位置
- Ansible免密码登陆
- 金蝶K/3 BOS产品培训教案
- markdown 基本语法
- 2014百度面试题目---“求比指定整数大且最小的不重复数”解答
- 数论(一)——素数,GCD,LCM