iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >如何使用apache的HttpClient进行http通讯
  • 445
分享到

如何使用apache的HttpClient进行http通讯

2024-04-02 19:04:59 445人浏览 独家记忆
摘要

这篇文章主要讲解了“如何使用apache的HttpClient进行http通讯”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用apache的HttpC

这篇文章主要讲解了“如何使用apache的HttpClient进行http通讯”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用apache的HttpClient进行http通讯”吧!

我们用apache的HttpClient这个库消费云端的Restful api时,一般都需要两次HTTP调用,第一次获得某种token,比如获取防止跨域请求伪造攻击Cross-site request forgery - CSRF的token,或者比如微信API的access token,第二次再进行真正的API消费。

通常情况下,第一次请求完毕后,服务器都会给客户端返回一些cookie字段,在第二次请求时,如果使用的是postman测试工具或者apache的HttpClient这个库,cookie字段都会自动被附加在第二次请求的HTTP头部。详情可以参考我写的另一篇博客:OData service parallel perfORMance measurement – how to deal with XSRF token in Java Program and jmeter

https://blogs.sap.com/2017/08/28/odata-service-parallele-performance-measurement-how-to-deal-with-xsrf-token-in-java-program-and-jmeter/

本文就来介绍apache的HttpClient,在发送第二个Http请求时,是如何自动插入从第一个请求获得的服务器颁发的cookie的。

首先进入HttpClient的单步调试:InternalHttpClient.doExecute方法:

如何使用apache的HttpClient进行http通讯

第85行的origheaders,即取出程序员在代码里指定的http请求头部字段,比如basic Authentication,content-type,token等等:

如何使用apache的HttpClient进行http通讯

这个cookie是什么时候传进来的?

如何使用apache的HttpClient进行http通讯

看来我们必须进入httpcore-4.4.3.jar这个apache HttpClient的实现里去调试。

如何使用apache的HttpClient进行http通讯

经过观察发现,一旦我执行完204行的conn.sendRequestHeader方法,就能观察到Cookie被自动设置了,所以奥妙就在第204行里。

如何使用apache的HttpClient进行http通讯

自动添加Content-Length头部字段:

如何使用apache的HttpClient进行http通讯

由此可见Content-length是通过方法entity.getContentLength()自动计算出来的,因此我们程序员不必在自己的应用代码里重复这个计算动作。

如何使用apache的HttpClient进行http通讯

自动加入host字段:

如何使用apache的HttpClient进行http通讯

自动加入Connection: Keep-Alive

如何使用apache的HttpClient进行http通讯

UserAgent的自动填充:Apache-HttpClient/4.5.1, 这个也不用程序员操心。

如何使用apache的HttpClient进行http通讯

终于到了我要找的RequestAddCookies这个HTTPRequestInterceptor了。光从这个类的字面意思就能猜到它和HTTP请求的Cookie有关。

如何使用apache的HttpClient进行http通讯

新建一个Cookie,这个CookieOrigin构造函数里的hpst,path和secure标志位都是Chrome开发者工具的Cookie标签页里能看到。

如何使用apache的HttpClient进行http通讯

从 Cookie Store里取出前一次请求中由服务器返回的Cookie:

如何使用apache的HttpClient进行http通讯

如何使用apache的HttpClient进行http通讯

如何使用apache的HttpClient进行http通讯

这里把Cookie store里的cookie加到第二个请求的头部字段,谜底就这样解开了。

如何使用apache的HttpClient进行http通讯

感谢各位的阅读,以上就是“如何使用apache的HttpClient进行http通讯”的内容了,经过本文的学习后,相信大家对如何使用apache的HttpClient进行http通讯这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

您可能感兴趣的文档:

--结束END--

本文标题: 如何使用apache的HttpClient进行http通讯

本文链接: https://www.lsjlt.com/news/60899.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何使用apache的HttpClient进行http通讯
    这篇文章主要讲解了“如何使用apache的HttpClient进行http通讯”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用apache的HttpC...
    99+
    2024-04-02
  • Java中如何使用HTTP协议进行网络通信?
    Java作为一种广泛使用的编程语言,为我们提供了很多便利的网络编程工具。其中,HTTP协议是网络通信中最常见的协议之一。在这篇文章中,我们将会介绍Java中如何使用HTTP协议进行网络通信,以及一些实用的技巧。 首先,我们需要知道Java中...
    99+
    2023-06-14
    http numpy 索引
  • Linux服务器上的ASP:如何使用HTTP对象进行通信?
    Linux服务器上的ASP:如何使用HTTP对象进行通信? 在使用ASP开发Web应用程序时,与其他服务器进行通信是不可避免的。HTTP协议是Web应用程序中最常用的通信协议之一,因此本文将介绍如何在Linux服务器上使用ASP通过HTTP...
    99+
    2023-10-31
    linux http 对象
  • 如何在HTTP协议接口测试中使用HttpClient
    本篇文章为大家展示了如何在HTTP协议接口测试中使用HttpClient,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、GET请求: GET请求时,参数一般是写在链接上的,代码如下:public&...
    99+
    2023-05-31
    http httpclient
  • 如何使用Jmeter进行http接口测试
    这篇文章给大家介绍如何使用Jmeter进行http接口测试,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。前言:  主要针对http接口进行测试,使用Jmeter工具实现。  Jmter工具设计之初是用于做性能测试的,它...
    99+
    2023-06-21
  • 如何进行主流Apache 2 PHP5安装使用
    如何进行主流Apache 2 PHP5安装使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。我们大家都知道Apache 2和PHP是创建交互式网站的流行方案,而...
    99+
    2023-06-17
  • 如何在Html5中与App进行通讯
    这期内容当中小编将会给大家带来有关如何在Html5中与App进行通讯,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。优点H5页面交由前端进行开发,页面模块之间分开开发和维护,有效减少App的开发周期H5页面...
    99+
    2023-06-09
  • 如何在Apache服务器上通过Shell脚本使用Go进行同步?
    在Web开发中,Apache服务器是非常常见的Web服务器之一。而Go语言作为一种高效、快速、简单的编程语言,越来越受到开发者们的青睐。在本文中,我们将探讨如何在Apache服务器上使用Shell脚本和Go语言进行同步。 一、准备工作 在开...
    99+
    2023-10-20
    apache 同步 shell
  • Java中如何使用HTTP协议进行编程?
    Java中如何使用HTTP协议进行编程? 在现代Web应用程序中,HTTP协议是最常用的协议之一。Java提供了丰富的API和库来处理HTTP请求和响应。本文将介绍Java中如何使用HTTP协议进行编程。 一、使用URLConnection...
    99+
    2023-10-12
    http 编程算法 存储
  • Android进程间如何使用Intent进行通信
    这篇文章主要介绍“Android进程间如何使用Intent进行通信”,在日常操作中,相信很多人在Android进程间如何使用Intent进行通信问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android进程...
    99+
    2023-07-05
  • 如何在 PHP 中使用 JavaScript 进行 HTTP 请求?
    在现代 Web 开发中,经常需要使用 JavaScript 发送 HTTP 请求来获取数据。在某些情况下,需要在 PHP 中执行此操作。本文将探讨如何在 PHP 中使用 JavaScript 发送 HTTP 请求。 一、使用 XMLHtt...
    99+
    2023-11-07
    http apache javascript
  • 如何在 Java 中通过对象进行 HTTP 加载?
    在 Java 中,我们可以使用对象进行 HTTP 加载,这可以帮助我们更加高效地获取远程数据。本文将介绍如何在 Java 中通过对象进行 HTTP 加载,并提供一些示例代码。 使用 HttpURLConnection 类 Java 提供...
    99+
    2023-07-27
    对象 http load
  • Java Socket通讯如何进行客户端的信息通信
    本篇文章为大家展示了Java Socket通讯如何进行客户端的信息通信,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java Socket通讯在实际的使用中有很多关键代码需要我们学习,那么首先我们就...
    99+
    2023-06-17
  • 如何在 Apache 日志中使用 NumPy 进行分析?
    Apache 日志是一种非常有用的数据源,可以用于分析网站的流量、用户行为等信息。NumPy 是 Python 中一个强大的数学库,可以用于数据分析、统计学和科学计算等领域。本文将介绍如何在 Apache 日志中使用 NumPy 进行分析。...
    99+
    2023-08-18
    numpy 日志 apache
  • NPM和Apache:如何使用Java对象进行编程?
    随着互联网技术的迅速发展,越来越多的企业开始使用Java作为开发语言。而在Java开发中,有两个非常重要的工具:NPM和Apache。NPM是Node.js的包管理器,而Apache则是一个开源的Web服务器软件。在本文中,我们将探讨如何...
    99+
    2023-08-18
    对象 npm apache
  • 如何通过HTTP对象在Linux服务器上使用ASP进行Web开发?
    在Linux服务器上使用ASP进行Web开发,需要使用HTTP对象。HTTP对象是Active Server Pages (ASP)的一个核心组件,它用于处理Web请求和响应。HTTP对象包含一组属性和方法,可以方便地实现与Web浏览器的通...
    99+
    2023-10-31
    linux http 对象
  • Python中如何使用HTTP库进行文件下载?
    在Python中,要进行文件下载,首先需要使用HTTP库。Python中有很多HTTP库可供使用,如urllib、requests、httplib等。在本篇文章中,我们将主要介绍使用requests库进行文件下载的方法。 安装reque...
    99+
    2023-09-21
    http 文件 面试
  • uniapp使用uni自带websocket进行即时通讯
    最近再办一个uniapp做的即时通讯,把其中思路记载一下。 技术栈采用uniapp+uview+vue2进行开发。 一、使用uni封装好的websocket。 下面的从uniapp官网截图的Api  uni.connectSocke...
    99+
    2023-09-04
    uni-app websocket 服务器
  • 如何使用Node.js进行TCP网络通信
    这篇文章给大家介绍如何使用Node.js进行TCP网络通信,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。摘要: 网络是通信互联的基础,Node.js提供了...
    99+
    2024-04-02
  • 如何使用angular的HttpClient搭配rxjs
    小编给大家分享一下如何使用angular的HttpClient搭配rxjs,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、原H...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作