`
winebibber
  • 浏览: 119481 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

HttpClient的一些技巧

    博客分类:
  • Java
阅读更多

使用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中会有<meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>这样的标签;或者在xml中会有<?xml version="1.0" encoding="gb2312"?>这样的标签,在这些情况下,可能与http头中返回的编码信息冲突,需要用户自己判断到底那种编码类型应该 是真正的编码。

二、自动转向
    根据RFC中对自动转向的定义,主要有两种:301和302。301表示永久的移走(Moved Permanently),当返回的是301,则表示请求的资源已经被移到一个固定的新地方,任何向该地址发起请求都会被转到新的地址上。302表示暂时 的转向,比如在服务器端的servlet程序调用了sendRedirect方法,则在客户端就会得到一个302的代码,这时服务器返回的头信息中 location的值就是sendRedirect转向的目标地址。
HttpClient支持自动转向处理,但是象POST和PUT方式这种要求接受后继服务的请求方式,暂时不支持自动转向,因此如果碰到POST方式提交 后返回的是301或者302的话需要自己处理。需要注意的是,有时候location返回的可能是相对路径,因此需要对location返回的值做一些处 理才可以发起向新地址的请求。
    另外除了在头中包含的信息可能使页面发生重定向外,在页面中也有可能会发生页面的重定向。引起页面自动转发的标签是:<meta http-equiv="refresh" content="5; url=http://www.ibm.com/">。如果你想在程序中也处理这种情况的话得自己分析页面来实现转向。需要注意的是,在上面那个标 签中url的值也可以是一个相对地址,如果是这样的话,需要对它做一些处理后才可以转发。

三、代理服务器
    HttpClient中使用代理服务器非常简单,调用HttpClient中setProxy方法就可以,方法的第一个参数是代理服务器地址,第二个参数是端口号。另外HttpClient也支持SOCKS代理。

<!---->    httpClient.getHostConfiguration().setProxy(hostName,port);


    HttpClient对http协议的支持非常好,使用起来很简单,功能也很强大,具有足够的灵活性和扩展性。对于想在Java应用中直接访问http资源的编程人员来说,HttpClient是一个不可多得的好工具。

分享到:
评论

相关推荐

    Apache httpclient源码4.5.12

    源码中的注释和设计模式也会帮助你提升Java编程技巧。 总的来说,Apache HttpClient 4.5.12的源码是学习HTTP通信和Java编程的一个重要资料,无论你是Web开发者、系统集成者还是网络工程师,都能从中受益匪浅。通过...

    httpclient-4.5.2.jar.zip

    4.5.2版本在4.5.1的基础上修复了一些已知问题,增强了性能,并对API进行了微调,以更好地适应现代网络环境。 2. 主要特性: - **线程安全**:HttpClient 4.5.2设计为线程安全,允许在多线程环境中无冲突地使用。 ...

    HTTPClient

    ### HTTPClient知识点详解 #### 1. HttpClient4 – 获取状态码 **1.1 概览** 本节将详细介绍如何使用HttpClient 4.x版本来获取HTTP响应的状态码,并对其进行验证。这对于开发人员来说是一个非常实用的功能,可以...

    httpclient的入门实例

    HttpClient是Apache基金会开发的一个Java库,用于执行HTTP请求。...这篇博客文章“httpclient的入门实例”可能是...对于源码分析和工具使用,你可以参考HttpClient的官方文档和相关教程,进一步了解其实现细节和优化技巧。

    Java-HttpClient帮助文档

    Java HttpClient是Apache软件基金会的Apache HTTP Components项目中的一个核心组件,它提供了一个强大的、...查阅httpclient-4.5.2-javadoc文档,可以获得更详细的方法和类的解释,进一步提升HttpClient的使用技巧。

    httpclient手册

    《HttpClient手册》是针对Java开发者的实用指南,主要聚焦于Apache HttpClient库的使用,这个库在构建网络应用...通过阅读《HttpClient 4.4教程》文档,你可以深入掌握这些概念和技巧,为你的开发工作打下坚实基础。

    HttpClient4.5.3资源

    HttpClient是Apache软件基金会的一个开源HTTP客户端库,广泛用于Java开发者进行网络通信。此资源包"HttpClient4.5.3"提供了HttpClient的...同时,配合文档学习,可以更高效地掌握HttpClient的使用技巧,提升开发效率。

    httpclient Demo 案例 含jar

    在IT行业中,网络通信是应用程序之间交互的重要环节。Apache HttpClient是一个强大的开源库,它提供了丰富的...在实践中,深入理解HttpClient的工作原理和使用技巧,能够帮助我们编写更高效、更可靠的网络客户端代码。

    使用HttpClient调试android接口-通用方法

    下面,我们将深入探讨HttpClient的基础知识、调试技巧以及如何封装通用方法。 1. **HttpClient基础知识**: - HttpClient是Apache的一个开源项目,提供了强大的HTTP协议处理能力,支持GET、POST、PUT等多种HTTP...

    HttpClient Https实战

    HttpClient是Apache基金会开发的一个Java库,用于执行HTTP和HTTPS请求。...通过阅读“HttpClient Https实战”这篇博客,我们可以深入学习到HttpClient的使用技巧和最佳实践,提升我们的网络编程能力。

    HttpClient4.5.2

    通过阅读提供的博文链接(尽管在当前环境下无法直接访问),你可能会发现更多关于HttpClient 4.5.2的使用技巧、最佳实践或者源码分析。对于深入理解和利用HttpClient,了解其内部工作原理,阅读源码是十分有益的。 ...

    httpClient工具类

    HttpClient工具类在Java编程中是用于执行HTTP请求的常用库,尤其在进行RESTful API调用时非常实用。...通过阅读和理解这个工具类的代码,我们可以更好地掌握HttpClient的使用技巧,提升网络通信的效率和可靠性。

    php中http请求封装HttpClient精华中的经典代码

    总结起来,HttpClient的封装是PHP开发中的一个实用技巧,它提高了代码的可读性和可维护性,减少了重复的网络请求代码。理解并熟练运用HttpClient的封装,可以帮助我们在实际项目中更高效地处理HTTP通信。通过学习和...

    commons-httpClient 3.1 jar和src

    Apache Commons HttpClient 3.1是Java中一个广泛使用的HTTP客户端库,它允许开发者构建复杂的HTTP...尽管如此,HttpClient 3.1仍然在许多现有项目中被使用,理解其工作原理和使用技巧对Java开发者来说仍然非常重要。

    commons-httpclient-3.0.1-src.zip

    通过深入分析 Commons HttpClient 3.0.1 的源码,开发者不仅可以掌握 HTTP 请求的基本操作,还能了解到高级特性和优化技巧,为自己的项目提供更高效、更稳定的网络通信解决方案。同时,这也是提升自身 Java 网络编程...

    android 学习笔记6-HttpClient 多线程下载 断点续传 进度条 源码关联

    3、使用异步HttpClient发送请求,可以在github上找一些别人已经写好的代码,封装度比较高,直接拿来用。 4、多线程下载:使用RandomAccessFile输出流写 5、多线程下载-断点续传:使用临时文件记录当前下载的数据,...

    httpclient相关jar 及其详解

    《HttpClient详解及应用》 HttpClient是Apache基金会的一个开源项目,主要提供了一套强大的客户端编程工具,用于...阅读这些资料,将有助于你更好地理解和掌握HttpClient的使用技巧,从而在实际开发中更加游刃有余。

    jsp 中HttpClient中的POST方法实例详解.docx

    ### jsp中HttpClient中的POST方法实例详解 ...掌握这些技巧对于提高JSP应用程序的功能性和灵活性非常有帮助。同时,需要注意的是,在实际开发过程中,还需要考虑异常处理、安全性等问题,以确保程序的稳定运行。

    Android使用HttpClient实现上传下载功能并监控进度

    在Android开发中,HttpClient是一个常用的库,用于执行HTTP请求,如上传和下载数据。本教程将详细介绍如何利用HttpClient实现...理解这些基本原理和技巧,将有助于你在实际开发中构建更高效、用户体验更好的应用程序。

Global site tag (gtag.js) - Google Analytics