Java的HTTP协议库 HttpComponents

Java的HTTP协议库 HttpComponents

Apache
Java
跨平台
Apache
2008-09-14

HttpComponents 也就是以前的httpclient项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端/服务器编程工具包,并且它支持 HTTP 协议最新的版本和建议。不过现在的 HttpComponents 包含多个子项目,有:

  • HttpComponents Core

  • HttpComponents Client
  • HttpComponents AsyncClient
  • Commons HttpClient

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

  • 实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)

  • 支持自动转向

  • 支持 HTTPS 协议

  • 支持代理服务器等

  • 支持Cookie

HttpClient 示例代码:

DefaultHttpClient httpclient = new DefaultHttpClient();
try {
	HttpGet httpget = new HttpGet("https://portal.sun.com/portal/dt");

	HttpResponse response = httpclient.execute(httpget);
	HttpEntity entity = response.getEntity();

	System.out.println("Login form get: " + response.getStatusLine());
	EntityUtils.consume(entity);

	System.out.println("Initial set of cookies:");
	List<Cookie> cookies = httpclient.getCookieStore().getCookies();
	if (cookies.isEmpty()) {
		System.out.println("None");
	} else {
		for (int i = 0; i < cookies.size(); i++) {
			System.out.println("- " + cookies.get(i).toString());
		}
	}

	HttpPost httpost = new HttpPost("https://portal.sun.com/amserver/UI/Login?" +
			"org=self_registered_users&" +
			"goto=/portal/dt&" +
			"gotoOnFail=/portal/dt?error=true");

	List <NameValuePair> nvps = new ArrayList <NameValuePair>();
	nvps.add(new BasicNameValuePair("IDToken1", "username"));
	nvps.add(new BasicNameValuePair("IDToken2", "password"));

	httpost.setEntity(new UrlEncodedFormEntity(nvps, Consts.UTF_8));

	response = httpclient.execute(httpost);
	entity = response.getEntity();

	System.out.println("Login form get: " + response.getStatusLine());
	EntityUtils.consume(entity);

	System.out.println("Post logon cookies:");
	cookies = httpclient.getCookieStore().getCookies();
	if (cookies.isEmpty()) {
		System.out.println("None");
	} else {
		for (int i = 0; i < cookies.size(); i++) {
			System.out.println("- " + cookies.get(i).toString());
		}
	}

} finally {
	// When HttpClient instance is no longer needed,
	// shut down the connection manager to ensure
	// immediate deallocation of all system resources
	httpclient.getConnectionManager().shutdown();
}

加载中

评论(4)

小童鞋
小童鞋
例子及文档信息都挺有帮助的。
木川瓦兹
木川瓦兹

Apache HttpComponents 4.5.7 GA 发布

Apache HttpComponents 4.5.7 GA 版本发布了,HttpComponents 也就是以前的 HttpClient项目,它提供了一些高效、功能丰富的编程工具包,用以支持 HTTP 协议的客户端/服务器,同时 HttpCompon...

01/26 07:10

Java HTTP 协议库 HttpComponents Core 4.4.11 发布

这是一个维护版本,它修复了 TLS v1.3 兼容性问题。 支持Java 11。 请注意,从 4.4 开始,HttpCore 需要 Java1.6 或更高版本。 重要信息:强烈建议 HttpCore 4.x GA 版本的用户使用新的 Http...

01/23 07:18

HttpComponents Client 5.0 beta3 发布

HttpComponents Client 5.0 beta3 发布了,此 BETA 版本通过 Conscrypt TLS 库增加了在 Java 1.7 和 Java 1.8 上对高级 TLS 功能(例如 ALPN protocol negotiation)的支持,并从 HttpCore 中...

2018/12/18 08:11

Apache HttpComponents 5.0 beta 6 发布

Apache HttpComponents 5.0 beta 6 发布了,HttpComponents 也就是以前的 httpclient 项目,它可以用来提供高效的、功能丰富的支持 HTTP 协议的客户端/服务器编程工具包,并且它支持 HTTP 协...

2018/12/08 08:37

HttpComponents Client 5.0 beta2 发布

HttpComponents Client 5.0 beta2 发布了,该 Beta 版本解决了与 Java 11 新 TLS 引擎的兼容性问题,以及自上一版本以来发现的许多问题。 值得关注的新特性: 改进与 JDK 11 的兼容性 支持针...

2018/10/30 07:08

Java HTTP 协议库 HttpComponents Core 5.0 beta5 发布

HttpComponents Core 5.0 发布了第五个测试版 beta5,该版本修复了自上次发布以来发现的一些缺陷,增加了对 Reactive Streams API 的支持,并修复了与 Java 11 的新 TLS 引擎之间的兼容性问题...

2018/10/24 08:06

HttpComponents Core 5.0 beta3,Java HTTP 协议库

HttpComponents Core 5.0 发布了第三个测试版 beta3,该版本修复了自上次发布以来发现的许多缺陷,添加了一些增量改进并改进了 javadoc 文档。 重要提醒:截至下一版本,开发团队打算在项目中...

2018/08/30 08:08

HttpComponents Client 4.5.6 GA 发布

HttpComponents Client 4.5.6 已发布,这是一个维护版,它将 Automatic-Module-Name 添加到了清单中,与 Java 9 平台模块系统兼容,修复了一些发现自 4.5.5 的问题。主要更新内容如下: [HTT...

2018/07/10 07:39

HttpComponents Core 4.4.10,Java 的 HTTP 协议库

HttpComponents Core 4.4.10 已发布,这是一个常规维护版本。它将 Automatic-Module-Name 添加到了 manifest 以与 Java 9 平台模块系统兼容,并修复了自 4.4.9 以来发现的许多问题。 值得注意...

2018/07/03 21:18

HttpComponents 4.5.5 发布,Java 的 HTTP 协议库

HttpComponents Client 4.5.5 已发布,这是一个维护版本,更新内容如下: [HTTPCLIENT-1690] Avoid merging Content-Encoding headers coming with 304 status to cache entry. [HTTPCLIENT-...

2018/01/22 22:38

没有更多内容

加载失败,请刷新页面

2
回答
java http客户端在linux系统下url中参数截断问题

java的http客户端,如httpclient或urlconnection,在请求时url中的参数会被截断,个人感觉是因为linux下的&在shell中...

01/15 16:39
1
回答
httpclient、feign

场景: A服务(web端),B服务(微服务数据提供服务shiro),C服务(eurka注册中心),A、B都注册在 1、A服务使用httpclient请求B...

2018/11/27 08:32
3
回答
怎么设置 cookie 呢 ?
sjack 的回答 2013/10/10 16:04
最佳答案
ok 已经找到 . http://hc.apache.org/httpcomponents-client-4.3.x/tutorial/html/statemgmt.html#d5e563
3
回答
[localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect

executing request :http://localhost:8080/jeesite/a/sys/user/hadoop org.apache...

2015/09/30 18:00
5
回答
使用 HttpClient 和 HtmlParser 实现简易爬虫

https://www.ibm.com/developerworks/cn/opensource/os-cn-crawler/

2008/10/05 17:06
20
回答
现在网页采集都用啥技术?

做舆情分析的项目,做了一年了。 网页采集从最初的httpclient + jsoup,每个人负责几个网站,刀耕火种,挖煤一般的一个网站一个网站开发。 后来...

2014/10/22 10:09
3
回答
使用HttpComponents访问获取不到想要的数据,什么原因?

http://fpcx.tjcs.gov.cn/TJTAX_NET/NetLevy/NetQuery/TicketUse/index.jsp 当访问提交到...

2015/12/24 17:11
3
回答
两个项目的信息交互,A发送给B,B根据数据做业务处理,该怎么选型。

一边有个服务器中转站A,A收到消息就转发给B,B是根据消息数据做业务逻辑,这个两个项目之间交互用什么比较好,我们一般都是http请求, 但是看到大家都用 ...

2014/12/30 10:42
1
回答
安全狗的Session验证的原理是什么

我用HttpClient爬一些网站,如果对方服务器装了安全狗,且安全狗的CC防护的会话验证模式设为中级模式,第一次访问的时候url总会带WebShield...

2015/06/11 20:04
1
回答
JFinal获取apache的httpclient所传POST不能获取值的问题

@JFinal 你好,想跟你请教个问题: 我使用JFinal2.0,接收HttpComponents模拟POST传值。 我使用原声的servlet可以接收...

2015/11/06 11:00

没有更多内容

加载失败,请刷新页面

HttpClient 4.3教程 第六章 HTTP缓存

HttpClient 4.3教程 第六章 HTTP缓存 6.1.基本概念 HttpClient的缓存机制提供一个与HTTP/1.1标准兼容的缓存层 - 相当于Java的浏览器缓存。HttpClient缓存机制的实现遵循责任链(Chain of Re...

2013/10/28 13:23
133
0
Android 浅谈HttpClient工具类

在 Android开发中我们经常会用到网络连接功能与服务器进行数据的交互,为此Android的SDK提供了Apache的 HttpClient来方便我们使用各种Http服务。你可以把 HttpClient想象成一个浏览器,通过它...

2013/07/25 14:54
698
0
httpClient学习

简单学习下httpclient,摘自官方文档

2015/05/13 11:33
127
0
HttpComponents

Commons HttpClient HttpClient HttpComponents 的关系是 旧的httpclient是属于Commons HttpClient项目的,不过此项目已不再更新,也就是httpclient3以前. 之后httpcore,httpclient,httpasync...

2013/12/14 22:50
124
1
[017] Android平台HttpClient的使用-手机号码归属地查询

Android平台主要提供了四种数据存储方式:Shared Preferences、文件存储、Sqlite存储和网络存储。其中: 1)Shared Preferences 一个轻量级的键-值存储机制,专门用于存储键-值对数据,并且仅...

2014/06/10 19:40
18
0
Apache HttpClient 资源释放、请求超时,导致线程池用光、内存不足

Apache HttpClient,据说很强大,可以支持峰值一秒7万以上的请求。不过需要注意一些资源释放和超时处理的问题。 问题1:线程资源无法释放,最终导致内存不足、或线程池被用光。 问题代码: ...

2018/10/17 09:04
152
0
HttpClient与HttpComponents

HttpClient HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供支持 HTTP 协议的客户端编程工具包 HttpClient: http://hc.apache.org/httpclient-3.x/ HttpClient入门: http:/...

2013/01/21 17:51
1K
1
今天被这么问题搞的头晕 no SOAPAction header!

错误信息: ns1:Client.NoSOAPAction no SOAPAction header! eroad-PC httpClient 调用webservice 错误 问题分析 wsdl soapAction 为空通过httpClient 调用的失败 只需在httpHeard 增加 head...

2015/07/31 16:16
239
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部