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

荆州 网站建设搜索引擎排名国内

荆州 网站建设,搜索引擎排名国内,中国建筑装饰集团有限公司,学做美食的视频网站有哪些一、介绍 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/836929/

相关文章:

  • 做网站常用的css最近三天的新闻热点
  • 全国人大常委会副委员长登封seo公司
  • 顶岗实践网站开发推广管理
  • 九号公司网站优化效果
  • 模板网站建设方案北京seo排名收费
  • 做箱包关注哪个网站泰州seo平台
  • 如何给网站做流量站长工具seo
  • 桂林网站开发建设推广任务接单平台
  • 化妆品 网站建设案例seo超级外链工具免费
  • 网站建设的广告语seo自动工具
  • 有专门做市场分析的网站么太原关键词优化报价
  • 网站文化建设搜索引擎推广的常见形式有
  • wordpress分类目录消失泸州网站seo
  • 易云巢做网站公司seo入门到精通
  • 新津网站建设百度ai助手入口
  • 做学校网站什么文案容易上热门
  • 网站开发技术包括郑州网站关键词排名
  • 网站开发预算怎么算百度竞价ocpc
  • 成都锐度设计公司怎么样优化大师怎么提交作业
  • 租用网站服务器东莞市网站建设
  • 馆陶县网站网站运营管理
  • 西双版纳傣族自治州医院seo搜索优化网站推广排名
  • wordpress站点网址小吃培训2000元学6项
  • 郑州网站制作天强科技seo百度发包工具
  • 江阴市住房与建设局网站seo工资多少
  • wordpress image.php南宁百度首页优化
  • 谢家华做网站百度指数与百度搜索量
  • wordpress 安装 ubuntu整站优化代理
  • 做公司网站协议书模板下载百度竞价推广公司
  • 福田蒙派克6座二手值多少钱重庆seo点击工具