HttpClient 4.3。HttpClient这货和Lucene一样,每个版本的API都变化很大,这有点让人头疼。就好比创建一个HttpClient对象吧,每一个版本的都不一样,
3.X是这样的
1
|
HttpClient httpClient= new DefaultHttpClient();
|
4.3是这样的
1
|
CloseableHttpClient httpClient = HttpClients.createDefault(); |
当然,上面这些变化只不过是一些小变化,大家看看API大家就都会了。
我要讲的是超时设置,HttpClient有三种超时设置,最近比较忙,没时间具体归纳总结,以后再补上,我这里就讲一些最简单最易用的超时设置方法。
这是个3.X的超时设置方法
1
2
3
|
HttpClient client = new HttpClient();
client.setConnectionTimeout( 30000 );
client.setTimeout( 30000 );
|
1
2
|
HttpClient httpClient= new HttpClient();
httpClient.getHttpConnectionManager().getParams().setConnectionTimeout( 5000 );
|
4.X版本的超时设置(4.3后已过时)
1
2
3
|
HttpClient httpClient= new DefaultHttpClient();
httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 2000 ); //连接时间
httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 2000 ); //数据传输时间
|
4.3版本超时设置
1
2
3
4
5
|
CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet httpGet= new HttpGet( "http://www.baidu.com" );//HTTP Get请求(POST雷同)
RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout( 2000 ).setConnectTimeout( 2000 ).build(); //设置请求和传输超时时间
httpGet.setConfig(requestConfig); httpClient.execute(httpGet); //执行请求
|
BTW,4.3版本不设置超时的话,一旦服务器没有响应,等待时间N久(>24小时)。
HttpClient升级到4.5版本后,API有很多变化,HttpClient 4之后,API一直没有太稳定,我感觉4.5版本抽象后,很多API应该快稳定了。
使用HttpClient,一般都需要设置连接超时时间和获取数据超时时间。这两个参数很重要,目的是为了防止访问其他http时,由于超时导致自己的应用受影响。
4.5版本中,这两个参数的设置都抽象到了RequestConfig中,由相应的Builder构建,具体的例子如下:
1
2
3
4
5
6
7
8
9
|
CloseableHttpClient httpclient = HttpClients.createDefault(); HttpGet httpGet = new HttpGet( "http://stackoverflow.com/" );
RequestConfig requestConfig = RequestConfig.custom() .setConnectTimeout( 5000 ).setConnectionRequestTimeout( 1000 )
.setSocketTimeout( 5000 ).build();
httpGet.setConfig(requestConfig); CloseableHttpResponse response = httpclient.execute(httpGet); System.out.println( "得到的结果:" + response.getStatusLine()); //得到请求结果
HttpEntity entity = response.getEntity(); //得到请求回来的数据
|
setConnectTimeout:设置连接超时时间,单位毫秒。
setConnectionRequestTimeout:设置从connect Manager获取Connection 超时时间,单位毫秒。这个属性是新加的属性,因为目前版本是可以共享连接池的。
setSocketTimeout:请求获取数据的超时时间,单位毫秒。 如果访问一个接口,多少时间内无法返回数据,就直接放弃此次调用。
相关推荐
5. **请求和响应的配置**:你可以为每个请求设置超时、重试策略、Cookie管理等。同样,响应可以被解析为不同类型的实体,如String、InputStream或File。 6. **重定向处理**:HttpClient 4.3提供自动处理HTTP重定向...
这个封裝工具类是对HttpClient 4.3进行的二次开发,旨在简化HTTP请求的处理,解决一些常见的问题,如代理设置、多线程并发请求、SSL安全连接以及GET和POST请求的通用实现。 1. **代理问题**:在进行网络请求时,...
在这个"httpClient4.3 Jar包 demo"中,你将找到HttpClient 4.3的jar文件以及相关的示例代码,对于学习和理解HttpClient的使用非常有帮助。 HttpClient 4.3主要知识点包括: 1. **基础概念**: - **HttpClient对象...
这个"httpClient4.3官方包"包含了HttpClient 4.3.1版本的所有源代码和必要的文档文件,使得用户可以直接在自己的项目中使用或进行深入学习。 HttpClient 4.3版本引入了许多改进和新特性,如支持最新的HTTP/1.1和...
10. **性能优化**:HttpClient提供了多种优化策略,例如重用连接、超时设置、线程池管理等,以适应不同的网络环境和应用需求。 了解以上知识点,开发者可以利用HttpClient 4.3高效地实现与Web服务器的交互,无论是...
开发者通常会创建一个 HttpClient 实例,配置各种参数,如连接超时、重试策略等。 2. **请求执行器(HttpRequestExecutor)**:处理 HTTP 请求的发送和响应的接收。HttpClient 提供了默认的实现,但也可以自定义以...
2. **连接管理**:理解ConnectionManager,如何设置连接池大小,超时时间,复用连接等。 3. **请求执行器**:使用DefaultHttpClient或者CloseableHttpClient,了解ExecutorService的概念。 4. **HTTP方法**:GET、...
1. 创建HttpClient实例:通过HttpClientBuilder,用户可以定制化构建HttpClient对象,设置连接超时、重试策略等参数。 2. 发送HTTP请求:使用HttpGet、HttpPost等类实例化请求,然后通过HttpClient对象的execute...
九、超时设置 通过`RequestConfig`可以设置连接超时和读取超时: ```java RequestConfig config = RequestConfig.custom() .setConnectTimeout(5000) // 连接超时 .setSocketTimeout(10000) // 读取超时 .build...
2. **连接管理**:HttpClient 4.3引入了更精细的连接管理机制,允许用户自定义连接池大小,控制并发请求的数量,以及设置超时策略,以优化网络资源的使用。 3. **多路复用**:HttpClient 4.3支持HTTP/1.1的Keep-...
- **超时设置**:合理设置请求和连接超时,防止程序阻塞。 6. **SSL支持**:HttpClient支持HTTPS通信,可以配置SSLContext和KeyManager/FixedTrustManager来处理证书和信任问题。 7. **Cookie管理**:如果应用...
此外,HttpClient 还支持设置请求头、身份验证、连接管理、超时控制等高级功能,以满足各种复杂的网络通信需求。 HttpClient 不是浏览器,它不会解析 HTML 内容或执行 JavaScript。它是一个低级别的库,主要用于...
- **超时设置**:允许设置连接超时、读取超时等,防止程序无响应。 - **Cookie管理**:支持Cookie规范,可以处理服务器返回的Cookie并将其发送回服务器。 2. **Httpmime组件(httpmime-4.3.jar)** - **MIME类型...
3. **异步操作**:HttpClient 4.3 引入了异步 API,允许非阻塞的网络操作,提高了并发性能。`HttpAsyncClient` 类提供了异步请求的接口。 4. **Cookie 管理**:通过 `CookieSpecRegistry` 和 `CookieStore` 接口,...
3. **连接超时设置**:可以设置连接建立、请求发送和响应接收的超时时间,防止请求无限等待。 4. **使用Cookie管理**:通过 `CookieStore` 和 `CookieSpec` 接口,可以管理客户端的Cookie,实现会话保持。 5. **...
2. 设置配置:可以定制重试策略、连接超时、身份验证等。 3. 创建HttpRequestBase对象:如HttpGet、HttpPost等,定义请求方法和URL。 4. 执行请求:通过HttpClient的execute()方法发送请求。 5. 处理响应:使用...
在配置HttpClient时,可能需要设置信任的证书和密钥库。 10. **错误处理**: 工具类可能会包含对异常的捕获和处理,如网络连接失败、超时、服务器错误等,以提供更友好的错误信息。 总之,这个HttpClient工具类...
HttpClient 4.3版本是该库的一个稳定版本,包含了各种优化和改进。 在HttpClient 4.3中,你可以发现以下关键知识点: 1. **基本概念**:HttpClient库主要由几个核心组件组成,如`CloseableHttpClient`(客户端实例...
- **设置连接管理器**:例如,使用`PoolingHttpClientConnectionManager`来控制连接池的大小、超时等。 - **设置认证策略**:可以使用`BasicScheme`、`DigestScheme`等来处理不同类型的认证。 - **设置重试策略**...
6. **连接管理**:讲解如何设置连接超时、读写超时,以及连接池的配置和管理,以优化性能和资源利用。 7. **身份验证与安全性**:包括基本认证、摘要认证、NTLM认证,以及SSL/TLS的配置和证书管理。 8. **重定向...