使用HttpClient过程中经常会碰到以下的问题,明白了这些技巧,处理起来将会非常的简单。 一、字符编码 某目标页的编码可能出现在两个地方,第一个地方是服务器返回的 http 头中,另外一个地方是得到的 html/xml 页面中。 1、在 http 头的 Content-Type 字段可能会包含字符编码信息。 例如可能返回的头会包含这样子的信息:Content-Type: text/html; charset=UTF-8。这个头信息表明该页的编码是UTF-8,但是服务器返回的头信息未必与内容能匹配上。比如对于一些双字节语言国家,可能服务器返回的编码类型是UTF-8,但真正的内容却不是UTF-8编码的,因此需要在另外的地方去得到页面的编码信息;但是如果服务器返回的编码不是UTF- 8,而是具体的一些编码,比如gb2312等,那服务器返回的可能是正确的编码信息。通过method对象的getResponseCharSet()方法就可以得到http头中的编码信息。 2、对于象xml或者html这样的文件,允许在页面中直接指定编码类型。比如在html中会有这样的标签;或者在xml中会有
<!---->
这样的标签,在这些情况下,可能与http头中返回的编码信息冲突,需要用户自己判断到底那种编码类型应该是真正的编码。 二、自动转向 根据RFC中对自动转向的定义,主要有两种:301和302。301表示永久的移走(Moved Permanently),当返回的是301,则表示请求的资源已经被移到一个固定的新地方,任何向该地址发起请求都会被转到新的地址上。302表示暂时的转向,比如在服务器端的servlet程序调用了sendRedirect方法,则在客户端就会得到一个302的代码,这时服务器返回的头信息中 location的值就是sendRedirect转向的目标地址。 HttpClient支持自动转向处理,但是象POST和PUT方式这种要求接受后继服务的请求方式,暂时不支持自动转向,因此如果碰到POST方式提交后返回的是301或者302的话需要自己处理。需要注意的是,有时候location返回的可能是相对路径,因此需要对location返回的值做一些处理才可以发起向新地址的请求。 另外除了在头中包含的信息可能使页面发生重定向外,在页面中也有可能会发生页面的重定向。引起页面自动转发的标签是:。如果你想在程序中也处理这种情况的话得自己分析页面来实现转向。需要注意的是,在上面那个标签中url的值也可以是一个相对地址,如果是这样的话,需要对它做一些处理后才可以转发。 三、代理服务器 HttpClient中使用代理服务器非常简单,调用HttpClient中setProxy方法就可以,方法的第一个参数是代理服务器地址,第二个参数是端口号。另外HttpClient也支持SOCKS代理。 httpClient.getHostConfiguration().setProxy(hostName,port); HttpClient对http协议的支持非常好,使用起来很简单,功能也很强大,具有足够的灵活性和扩展性。对于想在Java应用中直接访问http资源的编程人员来说,HttpClient是一个不可多得的好工具。
分享到:
相关推荐
在《HttpClient Tutorial》中,你可以学习到以下关键知识点: - **初始化HttpClient**:了解如何创建HttpClient实例,设置基本配置,如默认主机名验证、超时设置等。 - **执行HTTP请求**:学习如何构造HttpGet、...
学习HttpClient时,除了API文档,还可以参考开源社区中的示例代码和经验分享,如GitHub上的项目和StackOverflow上的问题解答。理解HttpClient的工作原理,如连接管理、线程安全性和错误处理机制,对于高效和稳定地...
HttpClient在静态化过程中,需要正确解析HTML中的编码信息,以避免在保存或展示时出现乱码。 6. **异常处理**:在实际应用中,可能出现各种预料之外的编码问题,如服务器未提供编码信息等。此时,需要编写健壮的...
- **NTLM连接持久化**: NTLM认证过程中,需要维护连接的状态信息。 #### 五、HTTP客户端服务 **5.1 HttpClient门面** - **门面**: 提供了一个统一的接口来访问各种HTTP客户端功能。 **5.2 HttpClient参数** - *...
HttpClient是Apache软件基金会的一个开源项目,它为Java开发者提供了一个功能强大的HTTP客户端API,使得开发者可以方便地构建网络请求和处理响应。这个标题"HttpClient中文文档,快速开发"表明我们有了一份关于...
如果请求执行失败,HttpClient 会抛出异常。此外,HttpClient 还支持设置请求头、身份验证、连接管理、超时控制等高级功能,以满足各种复杂的网络通信需求。 HttpClient 不是浏览器,它不会解析 HTML 内容或执行 ...
最后,迁移过程中可能会遇到的问题,比如在Openshift实例上发生的`BindException`,这可能需要对应用服务器的配置进行调整。在升级过程中,程序员需要对新库进行充分的测试,以确保兼容性和性能不会受到影响。 综上...
HttpClient是Apache软件基金会下的一个开源项目,主要用于构建HTTP客户端应用程序,提供了丰富的功能和强大的性能。本文将基于4.5.3版本的HttpClient官方API中文文档,深入探讨其核心概念、使用方法及常见应用场景。...
在HttpClient 4.5.3中,主要关注以下几个核心知识点: 1. **连接管理**:HttpClient 提供了`HttpClientConnectionManager`接口,用于管理HTTP连接。这个接口的实现,如`PoolingHttpClientConnectionManager`,允许...
`httpclient.jar`文件是HttpClient库的二进制形式,包含所有必要的类和资源,可以直接引入到Java项目中使用,无需构建过程。将这个JAR添加到项目的类路径后,就可以开始编写HTTP客户端代码了。 实战示例: ```java...
赠送jar包:httpclient-4.2.5.jar; 赠送原API文档:httpclient-4.2.5-javadoc.jar; 赠送源代码:httpclient-4.2.5-sources.jar; 赠送Maven依赖信息文件:httpclient-4.2.5.pom; 包含翻译后的API文档:httpclient...
在HttpClient中,主要的概念有以下几个: 1. **HttpClient实例**:HttpClient对象是执行HTTP请求的核心,负责建立与服务器的连接和发送请求。你可以通过`HttpClientBuilder`构建一个自定义的HttpClient实例,设置...
### HttpClient 4 官方教程中文翻译版知识点详解 #### 一、概述 Apache HttpClient 是一个用于Java应用程序的客户端HTTP组件。它旨在提供一个高效、最新且功能丰富的HTTP客户端编程框架,同时也支持HTTPS协议。...
HttpClientHelper 的主要功能可能包括以下部分: 1. **同步请求**:使用同步方法发送HTTP请求,等待服务器响应。这种模式适用于不关心响应时间,或者主线程需要等待请求完成的情况。 2. **异步请求**:使用异步...
同时,需要注意HttpClient不是线程安全的,因此在多线程环境中,每个线程应有自己的HttpClient实例。 6. **处理重定向**: HttpClient默认会自动处理重定向,但你可以通过配置`RedirectStrategy`来改变这一行为。 ...
提到code.jar包,这通常是指包含代码实现的库文件,可能包含了HttpClient的额外功能或者特定项目中的自定义代码。在某些情况下,code.jar可能是项目依赖的其他组件,与httpclient.jar一起使用以完成更复杂的任务。...
### jsp中HttpClient中的POST方法实例详解 #### 一、概述 在Web开发中,特别是使用JSP(Java Server Pages)进行...同时,需要注意的是,在实际开发过程中,还需要考虑异常处理、安全性等问题,以确保程序的稳定运行。
HttpClient是Apache软件基金会的一个开源项目,提供了一个强大的、高度可定制的HTTP客户端API,用于处理HTTP协议相关的请求和响应。HttpClient 4.5.3是该库的一个稳定版本,具有许多改进和修复,使得它在处理网络...
在IT行业中,HttpClient是一个常用的Java库,用于执行HTTP和HTTPS请求。这个实例主要涉及如何配置HttpClient来忽略SSL(Secure Socket Layer)...但请记住,忽视SSL验证在生产环境中可能会导致安全隐患,务必谨慎对待。