HttpClient介绍

  • HttpClient简介
  • 功能介绍
  • HttpClient不是浏览器
  • 基本功能

HttpClient简介

HTTP协议可以说是现在Internet上面最重要,使用最多的协议之一了,越来越多的java应用需要使用http协议来访问网络资源,特别是现在rest api的流行,HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。HttpClient 已经应用在很多的项目中,比如 Apache Jakarta 上很著名的另外两个开源项目 Cactus 和 HTMLUnit 都使用了 HttpClient,很多的java的爬虫也是通过HttpClient实现的,研究HttpClient对我们来说是非常重要的。

尽管java.net包提供了基本通过HTTP访问资源的功能,但它没有提供全面的灵活性和其它很多应用程序需要的功能。HttpClient就是寻求弥补这项空白的组件,通过提供一个有效的,保持更新的,功能丰富的软件包来实现客户端最新的HTTP标准和建议。
为扩展而设计,同时为基本的HTTP协议提供强大的支持,HttpClient组件也许就是构建HTTP客户端应用程序,比如web浏览器,web服务端,利用或扩展HTTP协议进行分布式通信的系统的开发人员的关注点。

功能介绍

以下列出的是 HttpClient 提供的主要的功能,要知道更多详细的功能可以参见 HttpClient 的主页。

  1. 实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)
  2. 支持自动转向
  3. 支持 HTTPS 协议
  4. 支持代理服务器等

HttpClient不是浏览器

它是一个客户端的HTTP通信实现库

很多人觉得既然HttpClient是一个HTTP客户端编程工具,很多人把他当做浏览器来理解,但是其实HttpClient不是浏览器,它是一个HTTP通信库,HttpClient的目标是发送和接收HTTP报文。HttpClient不会去缓存内容,执行嵌入在HTML页面中的javascript代码,猜测内容类型,重新格式化请求/重定向URI,或者其它和HTTP运输无关的功能。因此它只提供一个通用浏览器应用程序所期望的功能子集,最根本的区别是HttpClient中没有用户界面,浏览器需要一个渲染引擎来显示页面,并解释用户输入,例如鼠标点击显示页面上的某处,有一个布局引擎,计算如何显示HTML页面,包括级联样式表和图像。javascript解释器运行嵌入HTML页面或从HTML页面引用的javascript代码。来自用户界面的事件被传递到javascript解释器进行处理。除此之外,还有用于插件的接口,可以处理Applet,嵌入式媒体对象(如pdf文件,Quicktime电影和Flash动画)或ActiveX控件(可以执行任何操作)。HttpClient只能以编程的方式通过其API用于传输和接受HTTP消息。HttpClient也是完全内容不可知的。

另一个主要区别是对错误输入或HTTP标准违规的容忍。 需要允许无效的用户输入,以使浏览器用户友好。 还需要对从服务器检索的畸形文档的容忍度,以及在执行协议时服务器行为的缺陷,使尽可能多的用户可访问的网站。 然而,HttpClient努力在默认情况下尽可能接近并遵守HTTP标准规范和相关标准。 它还提供了一些手段来放松规范所施加的一些限制,这些限制允许或要求与不兼容的HTTP源或代理服务器兼容。

基本功能

(1) GET方法
使用 HttpClient 需要以下 6 个步骤:

  1. 创建 HttpClient 的实例

    HttpClient httpClient = new DefaultHttpClient();//默认方法
    //也可使用下面的方法
    CloseableHttpClient httpClient = HttpClients.createDefault();

  2. 创建某种连接方法的实例,在这里是GetMethod。在 GetMethod 的构造函数中传入待连接的地址

    GetMethod getMethod = new GetMethod("…");

  3. 调用第一步中创建好的实例的 execute 方法来执行第二步中创建好的 method 实例

  4. 读 response

  5. 释放连接。无论执行方法是否成功,都必须释放连接

  6. 对得到后的内容进行处理

以上内容是我对网上资料的整理汇总,偏向于理论,实际使用可参考以下大神的博文
1.HttpClient总结
2.HttpClient

什么是HttpClient相关推荐

  1. java爬取验证码图片_JAVA HttpClient实现页面信息抓取(获取图片验证码并传入cookie实现信息获取)...

    JAVA HttpClient实现页面信息抓取(获取图片验证码并传入cookie实现信息获取) 发布时间:2018-05-18 16:41, 浏览次数:632 , 标签: JAVA HttpClien ...

  2. httpclient工具类,post请求发送json字符串参数,中文乱码处理

    在使用httpclient发送post请求的时候,接收端中文乱码问题解决. 正文: 我们都知道,一般情况下使用post请求是不会出现中文乱码的.可是在使用httpclient发送post请求报文含中文 ...

  3. 关于HttpClient上传中文乱码的解决办法

    使用过HttpClient的人都知道可以通过addTextBody方法来添加要上传的文本信息,但是,如果要上传中文的话,或还有中文名称的文件会出现乱码的问题,解决办法其实很简单: 第一步:设置Mult ...

  4. java url json字符串_使用HttpClient将URL中的JSON查询字符串发送到Web服务(Java)

    我有一个我建立的Web服务...我现在要做的是发送一个简单的请求,其中包含一个从Tapestry Web应用程序到该Web服务的json查询字符串.我四处搜索,大多数人都说使用Apache HttpC ...

  5. java rest httpclient_java http请求建议使用webClient,少用RestTemplate,不用HttpClient

    简介: webClient:是Spring-webFlux包下的,非阻塞响应,最低java8支持函数式编程,性能好 RestTemplate:是Spring-webmvc包下的,满足RestFul原则 ...

  6. 【请求后台接口】30秒完成Angular10精简版HttpClient请求服务搭建

    ng g s services/http app.module.ts ... @NgModule({declarations: [...],imports: [...HttpClientModule, ...

  7. Angular 4+ HttpClient

    个人博客迁移至 http://www.sulishibaobei.com  处: 这篇,算是上一篇Angular 4+ Http的后续: Angular 4.3.0-rc.0 版本已经发布?.在这个版 ...

  8. HttpClient学习

    HttpClient学习 (1)下面列举几个主要的Http相关概念的类 类名 描述 HttpClient 建立请求客户端 HttpGet 代表请求方法,类似的还有HttpHead, HttpPost, ...

  9. 漫谈Httpclient

    引用地址: http://hc.apache.org/httpclient-3.x/ End of life The Commons HttpClient project is now end of ...

  10. 使用HttpClient实现跨服务图片下载

    需求: 由于web系统存放图片的文件夹路径和erp系统存放图片的文件夹路径不一样 所以 web系统文件上传的文件要拷贝到erp对应的文件夹 思路: 在erp中访问图片接口的时候,如果图片不存在,则调w ...

最新文章

  1. 在线作图|如何绘制一张山脊图
  2. datagridview cell字体大小自适应_CELL:肿瘤为何“饿不死”?神经元为饥饿胰腺癌提供营养支持...
  3. Java业务逻辑pyqt_PyQt5 UI界面与业务逻辑分离
  4. laravel5.8笔记八:数据库(单库和多库)
  5. Java黑皮书课后题第3章:**3.15(游戏:彩票)修改程序清单3-8,产生三位整数的彩票。程序提示用户输入一个三位整数,然后依照规则判定用户是否赢得奖金
  6. 前端学习(701):循环小总结
  7. 调整的飞秋官网幅度还非常的大
  8. python更新版本会丢失库吗_Python小技巧:如何批量更新已安装的库?
  9. 在ASP.NET Web API中返回错误的最佳实践
  10. 我可以隐藏HTML5号码输入的旋转框吗?
  11. WebRtc搭建 coturn
  12. latex 导出的pdf生成书签 目录
  13. 北京10万房源压货炒家 新政实施一周无人喝彩
  14. Ping32文档透明加密软件基础概念
  15. 互联网产品经理的职责
  16. 21受限玻尔兹曼机RBM
  17. 萝卜青菜各有所爱------htm 与 html
  18. Cloudflare Radar 2021 年回顾
  19. /storage/sdcard0, /sdcard, /mnt/sdcard ,/storage/emulated/legacy 的区别
  20. 美国往事 - 追忆我的房东Dick - 搞笑回忆

热门文章

  1. C++中static变量的初始化
  2. 硬盘、ROM、RAM
  3. findbugs 接口文档_Findbugs安装使用文档
  4. 【调试】前端调试,在电脑上调试手机浏览器
  5. mikrotik CAPsMAN设置教程
  6. 第12+13天BroadCastReceiver广播
  7. jQuery API翻译之开篇
  8. XMLHttpRequest对象
  9. 微信小程序 swiper和weiper-itme组件的基本使用,微信小程序轮播图这么做教程
  10. 实现远程登录-配置SSH