一、HttpClient介绍
目前HttpClient支持HTTP/1.1这个版本定义的所有Http方法:GET,HEAD,POST,PUT,DELETE,TRACE和OPTIONS。HttpClient的官方解释如下:Http协议应该是互联网中最重要的协议。持续增长的web服务、可联网的家用电器等都在继承并拓展着Http协议,向着浏览器之外的方向发展。
虽然jdk中的java.net包中提供了一些基本的方法,通过http协议来访问网络资源,但是大多数场景下,它都不够灵活和强大。HttpClient致力于填补这个空白,它可以提供有效的、最新的、功能丰富的包来实现http客户端。
为了拓展,HttpClient即支持基本的http协议,还支持http-aware客户端程序,如web浏览器,网络服务客户端,或者用于平、拓展http协议的分布式系统。
HttpClient的定义:
是一个基于HttpCore的客户端Http传输类库
基于传统的(阻塞)IO
内容无关
HttpClient不能做的事情:
HttpClient不是浏览器,它是一个客户端http协议传输类库。HttpClient被用来发送和接受Http消息。HttpClient不会处理http消息的内容,不会进行javascript解析,不会关心content type,如果没有明确设置,httpclient也不会对请求进行格式化、重定向url,或者其他任何和http消息传输相关的功能。
在项目中引入HttpClient,以Maven为例:
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5</version>
</dependency>
二、遇到的问题及解决方案
1、 缺少证书
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
问题的根本是:
缺少安全证书时出现的异常。
解决问题方法:
从网站https://confluence.atlassian.com/download/attachments/180292346/InstallCert.java 下载InstallCert.java程序
编译InstallCert.java,然后执行:java InstallCert hostname,比如:java InstallCert www.163.com
根据提示操作,会在当前的目录下产生一个名为“ssecacerts”的证书。
将证书拷贝到$JAVA_HOME/jre/lib/security目录下,问题便得到解决。