简介:

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相关推荐

  1. 编写高质量代码:改善Java程序的151个建议(第9章:多线程和并发___建议125~131)

    建议125:优先选择线程池 建议126:适时选择不同的线程池来实现 建议127:lock与synchronized是不一样的 建议128:预防线程死锁 建议129:适当设置阻塞队列的长度 建议130: ...

  2. 编写高质量代码改善java程序的151个建议——[110-117]异常及Web项目中异常处理

    编写高质量代码改善java程序的151个建议--[110-117]异常及Web项目中异常处理 原创地址:http://www.cnblogs.com/Alandre/(泥沙砖瓦浆木匠),需要转载的,保 ...

  3. HttpUtils工具类 java程序 发起 网络请求

    HttpUtils工具类 用于java程序 发起 网络请求 @Slf4j public class OkHttpUtils {private static final String HTTP_JSON ...

  4. 编写高质量代码:改善Java程序的151个建议 (第1章 Java开发中通用的方法和准则)

    第1章 Java开发中通用的方法和准则 The reasonable man adapts himself to the world;the unreasonable one persists in ...

  5. 转载:一位资深程序员大牛给予Java初学者的学习路线建议

    一位资深程序员大牛给予Java初学者的学习路线建议 java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来 ...

  6. Java异常机制及异常处理建议

    Java异常机制及异常处理建议 参考文章: (1)Java异常机制及异常处理建议 (2)https://www.cnblogs.com/wangxilei/p/9522259.html 备忘一下.

  7. java 向nodejs 发送请求简单案例

    java  向nodejs 发送请求简单案例 最近在做nodejs的东西,一直不明白java如何与nodejs建立连接,下面写了一个简单demo: nodejs端: var http = requir ...

  8. java 151建议_编写高质量代码改善java程序的151个建议——导航开篇

    前言 系列文章: 下个星期度过这几天的奋战,会抓紧java的进阶学习.听过一句话,大哥说过,你一个月前的代码去看下,惨不忍睹是吧.确实,人和代码一样都在成长,都在变好当中.有时候只是实现功能的编程,长 ...

  9. java http请求 乱码_怎么解决java中的http请求乱码

    怎么解决java中的http请求乱码 发布时间:2020-06-23 20:00:11 来源:亿速云 阅读:90 作者:元一 怎么解决java中的http请求乱码?针对这个问题,今天小编总结了这篇文章 ...

最新文章

  1. ggtree美颜进化树-宏基因组扩增子
  2. 【Scratch】青少年蓝桥杯_每日一题_2.01_画五角星
  3. 2021-10-11 程序人生 -感想随笔
  4. C++的cin和cout取消同步
  5. 数据库系统的体系结构知识笔记
  6. 人工智能 量子力学 时间简史 山海经 三体
  7. IDC:2021年全年中国市场折叠屏产品规模约150万台
  8. 面试题 01.07. 旋转矩阵
  9. 获取Button脚本挂载的事件名
  10. 全国计算机应用能力三个模块,全国专业技术人员计算机应用能力考试科目模块Word...
  11. uiautomator2遍历子元素
  12. canvas-缤纷小球
  13. 用python爬取隐藏内容_人民日报点赞北大保安小哥,自学Python后,人生开挂了!...
  14. ibm tivoli_通过IBM Tivoli Access Manager WebSEAL单一登录到IBM WebSphere Portal
  15. 使用pandas读取excel表格如何去掉标题
  16. AcWing - 求组合数 III(lucas逆元)
  17. FPGA实现开根号,仿真通过,算一次需要34个时钟周期
  18. 常用设计模式-策略模式+工厂模式+模板模式(使用场景、解决方案)
  19. pd.melt() vs reshape2::melt()
  20. 樱花FRP内网穿透登录群晖相册ds photo

热门文章

  1. SpringBoot-web开发(一): 静态资源的导入(源码分析)
  2. MinkowskiEngine Miscellaneous Classes杂类
  3. PyTorch中的MIT ADE20K数据集的语义分割
  4. AttributeError: module ‘os‘ has no attribute ‘mknod‘
  5. CoordinatorLayout 的jar包位置
  6. Ansible免密码登陆
  7. 金蝶K/3 BOS产品培训教案
  8. markdown 基本语法
  9. 2014百度面试题目---“求比指定整数大且最小的不重复数”解答
  10. 数论(一)——素数,GCD,LCM