HttpComponents

异步请求CloseableHttpAsyncClient的使用

眉间皱痕 提交于 2020-10-30 09:03:31
1、前言 项目有个需求,需要把一些没用影响业务逻辑的http请求改成异步请求,httpclient在4.0后提供新的api CloseableHttpAsyncClient可以使用,记录下使用过程。 2、网络调用类型 (1)传统BIO(Blocking IO) 同步阻塞式IO,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。 (2)NIO(Not-Blocking IO) NIO:同步非阻塞式IO,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。 (3)AIO(NIO.2) 异步非阻塞式IO,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理。 3、CloseableHttpAsyncClient CloseableHttpAsyncClient是apache在4.0后提供AIO操作的api,基本使用如下 1)pom.xml引用如下 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId>

使用feilong发企业微信机器人

倾然丶 夕夏残阳落幕 提交于 2020-10-24 17:12:48
使用 #feilong# https://www.oschina.net/p/feilong 发企业微信机器人 企业微信机器人在日常的使用场景中越来越多, 比如服务器关键任务告警,定时发通知提醒等等, 和短信相比即免费又不像短信逐渐只有接收验证码的功能, 那么问题来了,如何使用feilong来发送企业微信机器人呢? 简单 3 步 第1步: jar 依赖 必要依赖 <dependency> <groupId>com.github.ifeilong</groupId> <artifactId>feilong</artifactId> <version>3.0.9</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpmime</artifactId> <version>4.5.12</version> <exclusions> <exclusion> <artifactId>httpclient</artifactId> <groupId>org.apache.httpcomponents</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org

精讲RestTemplate第1篇-在Spring或非Spring环境下如何使用

痴心易碎 提交于 2020-08-11 17:59:21
一、什么是 RestTemplate? RestTemplate 是执行HTTP请求的同步阻塞式的客户端,它在HTTP客户端库(例如JDK HttpURLConnection,Apache HttpComponents,okHttp等)基础封装了更加简单易用的模板方法API。也就是说RestTemplate是一个封装,底层的实现还是java应用开发中常用的一些HTTP客户端。但是相对于直接使用底层的HTTP客户端库,它的操作更加方便、快捷,能很大程度上提升我们的开发效率。 RestTemplate 作为spring-web项目的一部分,在Spring 3.0版本开始被引入。RestTemplate类通过为HTTP方法(例如GET,POST,PUT,DELETE等)提供重载的方法,提供了一种非常方便的方法访问基于HTTP的Web服务。如果你的Web服务API基于标准的RESTful风格设计,使用效果将更加的完美。 根据Spring官方文档及源码中的介绍,RestTemplate在将来的版本中它可能会被弃用,因为他们已在Spring 5中引入了WebClient作为非阻塞式Reactive HTTP客户端。但是RestTemplate目前在Spring 社区内还是很多项目的“重度依赖”,比如说Spring Cloud。另外,RestTemplate说白了是一个客户端API封装

精讲RestTemplate第2篇-多种底层HTTP客户端类库的切换

浪尽此生 提交于 2020-08-04 09:22:13
本文是精讲RestTemplate第2篇,前篇的blog访问地址如下: 精讲RestTemplate第1篇-在Spring或非Spring环境下如何使用 RestTemplate只是对其他的HTTP客户端的封装,其本身并没有实现HTTP相关的基础功能。其底层实现是可以配置切换的,我们本小节就带着大家来看一下RestTemplate底层实现,及如何实现底层基础HTTP库的切换。 一、源码分析 RestTemplate有一个非常重要的类叫做HttpAccessor,可以理解为用于HTTP接触访问的基础类。下图为源码: 从源码中我们可以分析出以下几点信息 RestTemplate 支持至少三种HTTP客户端库。 SimpleClientHttpRequestFactory。对应的HTTP库是java JDK自带的HttpURLConnection。 HttpComponentsAsyncClientHttpRequestFactory。对应的HTTP库是Apache HttpComponents。 OkHttp3ClientHttpRequestFactory。对应的HTTP库是OkHttp java JDK自带的HttpURLConnection是默认的底层HTTP实现客户端 SimpleClientHttpRequestFactory,即java

学习HttpClient,从两个小例子开始

我的梦境 提交于 2020-04-24 20:23:05
前言 HTTP(Hyper-Text Transfer Protocol,超文本传输协议)在如今的互联网也许是最重要的协议,我们每天做的很多事情都与之有关,比如,网上购物、刷博客、看新闻等。偶尔你的上级还会安排任务给你让你去对接API接口(RESTFUL),你接到任务后,啪啪的敲了一行又一行代码,一遍敲着一遍心里骂着:这是谁设计的这样脑残接口,一点都不好用,对接起来非常麻烦,最终,你怀着极其复杂的心情把api对接完了。有一天你的上级叫你去开发一个API接口,你情绪高涨,把接口开发完了,结果......。在程序中使用RESTFUL API,与传统的webservice相比,耦合度更低,任何能使用http的地方都能使用RESTFUL API,你能在java、python中调用,甚至能在网页中使用ajax来调用。 HttpClient是Apache HttpComponents的一个组件,提供了用来发送HTTP请求和接受HTTP响应的组件库,它并不是一个浏览器,但是他实现了浏览器HTTP相关的功能。你能使用HttpClient来构建你所需要的应用,例如:网页爬虫、调用RESTFUL接口等。JDK提供的HttpURLConnection也支持HTTP特性,不过使用起来比较麻烦,为了能写入请求体和读取请求体,你不得不分别获取底层的InputStream和Outputstream

org.apache.commons.httpclient工具类

你离开我真会死。 提交于 2020-04-24 15:38:18
import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpMethod; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.NameValuePair; import org.apache.commons.httpclient.URIException; import org.apache.commons.httpclient.methods.GetMethod; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.methods.StringRequestEntity; import org.apache.commons.httpclient.params.HttpConnectionManagerParams; import org.apache.commons

掌握 Spring 之 RestTemplate

我与影子孤独终老i 提交于 2020-02-25 16:41:48
掌握 Spring 之 RestTemplate 闻人的技术博客 关注 2 2019.05.11 15:56:51 字数 2,787 阅读 1,094 前言 在 Java 服务端开发领域里,Spring 是绕不开的话题,尤其是现在微服务概念盛行,Spring Boot 的出现更是给 Spring 注入了新的活力,除此之外还有 Spring Cloud,这些框架让 Spring 技术体系更加丰富。Spring 从 2014 年的 1.0.0 版本迭代到 现在的 5.2.0 M1 版本,紧随着 Java 语言发展,不断引入新的特性和功能。本文关注的是 Spring 框架中 RestTemplate 内容,可以减少我们平时开发常使用的 HttpClient API 依赖。文章所涉及的示例 Demo 详见Github 地址: Resttemplate demo 。感谢小七同学的认真校对,如果有任何技术问题或者文章纰漏,欢迎留言联系,一起交流探讨 😁。 认识 RestTemplate 首先在我们学习使用 RestTemplate 之前,先认识下这个类,来看 Spring 官方怎么描述的。 从官方 API 文档 RestTemplate javadoc 可以找该类的描述如下: Synchronous client to perform HTTP requests, exposing a

springboot 使用RestTemplate+httpclient连接池发送http消息

夙愿已清 提交于 2019-12-05 14:06:48
简介 RestTemplate是spring支持的一个请求http rest服务的模板对象,性质上有点像jdbcTemplate 是Spring用于同步client端的核心类,简化了与http服务的通信,并满足RestFul原则,程序代码可以给它提供URL,并提取结果。默认情况下,RestTemplate默认依赖jdk的HTTP连接工具。当然你也可以 通过setRequestFactory属性切换到不同的HTTP源,比如Apache HttpComponents、Netty和OkHttp。本章讨论的就是设置RestTemplate底层使用的httpclient(org.apache.http.client.HttpClient)发送请求 HttpClient可以做连接池,而发送消息的工具类可以使用RestTemplate,所以如果你的项目需求http连接池,RestTemplate+httpclient连接池是一种不错的方式,可以节省开发工作,也可以更优雅的使用。 配置 maven依赖 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.6</version> </dependency> <dependency>

好程序员Java教程分享使用HttpClient抓取页面内容

我是研究僧i 提交于 2019-12-05 09:05:00
好程序员Java教程分享使用HttpClient抓取页面内容,使用HttpClient工具来发送Http请求 1.简介 HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。HttpClient 已经应用在很多的项目中,比如 Apache Jakarta 上很著名的另外两个开源项目 Cactus 和 HTMLUnit 都使用了 HttpClient。 HttpClient 相比传统 JDK 自带的 URLConnection,增加了易用性和灵活性,它不仅是客户端发送 HTTP 请求变得容易,而且也方便了开发人员测试接口(基于 HTTP 协议的),即提高了开发的效率,也方便提高代码的健壮性。因此熟练掌握 HttpClient 是很重要的必修内容,掌握 HttpClient 后,相信对于 HTTP 协议的了解会更加深入。 2.应用场景 ​ 3.HttpClient工具的使用 1)添加依赖 <!-- Apache Http Begin --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version

apache的HttpComponents项目

北城以北 提交于 2019-12-05 04:42:50
先介绍一下一个开源项目, 这个项目就是Apache开源组织中的HttpComponents,主要是提供对http服务器的访问功能,目前已经是一个单独的项目,可见http服务器的访问绝非易事。 在某些时候可能需要通过程序来访问这别人的网页程序,比如从别人的网页中“偷”一些数据。如果对方仅仅是一个很简单的页面,那我们的程序会很简单,。但是考虑到一些服务授权的问 题,很多公司提供的页面往往并不是可以通过一个简单的URL就可以访问的,而必须经过注册然后登录后方可使用提供服务的页面,这个时候就涉及到 COOKIE问题的处理。我们知道目前流行的动态网页技术例如ASP、JSP无不是通过COOKIE来处理会话信息的。为了使我们的程序能使用别人所提供的服务页面,就要求程序首先登录后再访问服务页面!再比如通过HTTP来上传文件呢? HttpComponents 项目就是专门设计来简化HTTP客户端与服务器进行各种通讯编程。通过它可以让原来很头疼的事情现在轻松的解决,例如你不再管是HTTP或者HTTPS的通讯方式,告诉它你想使用HTTPS方式,剩下的事情交给 httpclient替你完成。 网址:http://www.apache.org/ 主页下面的Projects 可以找到HttpComponents项目,下载到相应的jar包,以及源代码跟示例程序。 来源: oschina 链接: https:/