当前位置: 首页 > news >正文

西安营销型网站新郑网络推广

西安营销型网站,新郑网络推广,外包加工网下载,wordpress googleapis一、介绍 HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。 我们可以通过这个HttpClient工具,在java代码中去构造和发送ht…

一、介绍

HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。

我们可以通过这个HttpClient工具,在java代码中去构造和发送http请求

了解http

http的长短连接

要搞清楚编程语言层面http client的使用,就得先对http协议有所了解。

你应该知道http的transfer layer(传输层)其实是tcp协议,而tcp协议最关键的就是一次连接的建立到释放需要经过三次握手,四次挥手。

那么如果你连续访问同一个服务器n次,就得建立n次连接,显然很耗费时间,用户使用体验不好,也没有必要。

于是从HTTP1.1协议开始,有了所谓的长连接(persistent connection),而且客户端默认行为就是长连接(需要服务端也打开长连接才能实际生效),有了长连接,那么原来
一次连接=一次请求+一次响应,现在可以一次连接=(一次请求+一次响应)*n,n>=1。

tips:注意连接和请求是两个不同的概念。

这样子对于连续n次请求同一服务器的场景来说,就比原来减少了n-1次连接,也就是减少了(3次握手+4次挥手)*(n-1)的时间。

当然,在实际使用中,这里的请求次数n是有limitation的,即使你没有手动设置,其本身肯定也有一个默认值。
除了请求数量上有限制外,一般还有时间上的限制,这里的时间限制包括连接的空闲时间最大存活时间(这两个概念是不同的)。上面我使用了连续请求这个词语,连续是个很抽象的概念,得使用量级去定义它,所以timeout就表明了两次连接时间间隔得在timeout内才算作连续。超过这个时间长连接会被释放掉。

一般在请求头或者响应头通过这个字段定义:
Keep-Alive: timeout=5, max=1000

这表明长连接的空闲时间为5s,时间单位是秒。

tips:在软件设计中,边界思想是很重要的。

那客户端这一头是如何控制开启长短连接的呢?
请求头的这个字段:Connection。

Connection: close->禁止长连接
Connection: keep-alive->使用长连接

官网原话是:
HTTP/1.1 defines the “close” connection option for the sender to signal that the
connection will be closed after completion of the response.

由于默认行为是长连接了(相当于默认值keep-alive),所以如果不想要长连接,那么需要显示指明这个请求头
字段的值为close。

有时候要小心一点的就是服务端没有打开长连接的支持(默认打开),虽然一般情况下不会有人这么做,但是原理还是要知道的。

还有一点就是连接的关闭可以分为client主动关闭还是server端关闭,并不一定总是server端关闭的连接。

连接池概念

在apache http client中,连接是由连接管理对象来管理,有两种类型。
一种是Simple connection manager(对应的是asicHttpClientConnectionManager.java),
一种就是Pooling connection manager(对应的是PoolingHttpClientConnectionManager.java)。
从名字上看就知道一个是一个http client对应一个connection,一个是一个http client对应一个connection pool,既然是pool,那么connection的数量就可能是n。

tips:http client和connection是两个不同的概念。

需要注意的是,如果没有明确的指定connnection manager,通过HttpClientBuilder.java创建http client的话默认会为你创建的是Pooling connection manager。

根据实际需要选择,一般我都偏向于将http client作为单例使用。

了解http 来自:https://zhuanlan.zhihu.com/p/341584129

二、使用

HttpClient的核心API:

  • HttpClient:Http客户端对象类型,使用该类型对象可发起Http请求。
  • HttpClients:可认为是构建器,可创建HttpClient对象。
  • CloseableHttpClient:实现类,实现了HttpClient接口。
  • HttpGet:Get方式请求类型。
  • HttpPost:Post方式请求类型。

发送请求步骤

  1. 创建httpclient 对象
  2. 创建 httpclient 请求对象【实例】
    • 如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象。
    • 如果需要发送请求参数,可调用setEntity(HttpEntity entity)方法来设置请求参数;
  3. 调用httpclient 的execute方法发送请求

三、代码案例

采用的是阿里云的sdk-oss(包含了httpclient)

<dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId>
</dependency>

GET

 /*** 测试通过httpclient发送GET方式的请求*/@Testpublic void testGET() throws Exception{//创建httpclient对象CloseableHttpClient httpClient = HttpClients.createDefault();//创建请求对象HttpGet httpGet = new HttpGet("http://localhost:8080/user/shop/status");//发送请求,接受响应结果CloseableHttpResponse response = httpClient.execute(httpGet);//获取服务端返回的状态码int statusCode = response.getStatusLine().getStatusCode();System.out.println("服务端返回的状态码为:" + statusCode);HttpEntity entity = response.getEntity();String body = EntityUtils.toString(entity);System.out.println("服务端返回的数据为:" + body);//关闭资源response.close();httpClient.close();}

POST

/*** 测试通过httpclient发送POST方式的请求*/@Testpublic void testPOST() throws Exception{// 创建httpclient对象CloseableHttpClient httpClient = HttpClients.createDefault();//创建请求对象HttpPost httpPost = new HttpPost("http://localhost:8080/admin/employee/login");JSONObject jsonObject = new JSONObject();jsonObject.put("username","admin");jsonObject.put("password","123456");StringEntity entity = new StringEntity(jsonObject.toString());//指定请求编码方式entity.setContentEncoding("utf-8");//数据格式entity.setContentType("application/json");httpPost.setEntity(entity);//发送请求CloseableHttpResponse response = httpClient.execute(httpPost);//解析返回结果int statusCode = response.getStatusLine().getStatusCode();System.out.println("响应码为:" + statusCode);HttpEntity entity1 = response.getEntity();String body = EntityUtils.toString(entity1);System.out.println("响应数据为:" + body);//关闭资源response.close();httpClient.close();}
http://www.hkea.cn/news/310142/

相关文章:

  • 扬州专业做网站做关键词优化
  • 宿州网站建设贰聚思诚信网站服务器
  • 用照片做模板下载网站好百度爱采购官方网站
  • 微网站建设套餐网络营销是做什么的
  • 徐州有哪些做网站苏州网站建设费用
  • 统一企业信息管理系统网站直通车怎么开效果最佳
  • 武汉外贸网站建设公司外链相册
  • java做网站的权限管理seo描述是什么
  • 招聘网最新招聘信息网武汉seo计费管理
  • 直播软件开发源码重庆seo顾问
  • 公司网站如何做宣传百度视频推广怎么收费
  • 淄博市 网站建设报价郑州seo外包阿亮
  • 网络服务商是指什么网站优化排名工具
  • 网站优化的分析比较好的品牌策划公司有哪些
  • 国外比较好的资源网站电商运营推广是做什么的
  • 佛山房地产网站建设seo实战培训王乃用
  • 如何做可以赚钱的网站关键词如何快速排名
  • 深圳品牌做网站公司有哪些百度app推广
  • 重庆建设行业信息网站搜狗登录入口
  • 同仁行业网站建设报价北京做的好的seo公司
  • 陕西自助建站做网站郑州外语网站建站优化
  • 小型企业网站系统cilimao磁力猫最新版地址
  • 铁岭网站建设移动网站广东网站seo
  • 网站模板插件sem和seo
  • 用wordpress制作网站模板沈阳seo
  • 优化一个网站多少钱宜昌网站seo
  • 刚做的网站怎么才能搜索到枸橼酸西地那非片功效效及作用
  • 罗湖区网站公司专业模板建站
  • 哪有备案好的网站国产系统2345
  • 网站开发怎么让别人看到最新营销模式有哪些