【背景】

最近和之前,折腾了这个:

【教程】模拟登陆百度之Java代码版

然后,对于Java的HttpClient,有了点了解。

现在整理如下:


Java本身没有Http相关的库

Java本身,没有内置对应的Http相关的库函数

与此对应的是,关于http处理,其他语言,都有内置的库:

  • Python有内置的urllib,urllib2等模块
  • C#有System.Net,System.Web相关库

Java中用的最多的http的库就是:HttpClient

而关于网络处理,http相关处理,则用的最多的就是:

HttpClient

而HttpClient,是Apache这个组织所发布的。

其对应的,完整的名称其实是:Apache HttpComponents

HttpClient的相关解释

Apache HttpComponents包含了两大部分:

  • HttpComponents Core == HttpCore
    • 实现了一系列的底层传输的功能
    • 这些底层功能,可以用来去建立自己的client和server
    • 支持两种I/O模式:
      • 阻塞型Blocking:基于典型的Java的I/O模型
      • 非阻塞型Non-Blocking:基于Java的NIO,事件驱动型
    • 在线文档:
    • 示例代码:HttpCore Examples
  • HttpComponents Client == HttpClient
    • 兼容HTTP 1.1
    • 基于HttpCore
      • 意味着:导入对应的库HttpClient库时,也要导入相关的HttpCore的库
    • 同时提供了其他功能:
      • 客户端认证功能
      • HTTP状态管理
      • HTTP连接管理
    • HttpClient是之前常用的那个:Commons HttpClient 3.x的继承者
    • 示例代码:HttpClient Examples
    • HttpClient还有个异步的版本:

到哪里下载HttpClient

推荐使用最新版本的HttpClient。

比如,此刻,2013-09-17,最新版本是4.3

所以,进入:

http://hc.apache.org/httpcomponents-client-ga/index.html

后,可以在页面左边列表中看到那个:

HttpClient 4.3 (GA)

进入后,点击对应的:

HttpClient Downloads

可以找到:

HttpComponents Downloads

可以看到对应的4.3的各种下载:

二进制(库文件)下载:

4.3.zip

如何使用HttpClient

下载到:

HttpClient 4.3.zip

后,得到:

httpcomponents-client-4.3-bin.zip

解压后,在:

httpcomponents-client-4.3-bin\lib

可以找到各个库文件:

  • commons-codec-1.6.jar
  • commons-logging-1.1.3.jar
  • fluent-hc-4.3.jar
  • httpclient-4.3.jar
  • httpclient-cache-4.3.jar
  • httpcore-4.3.jar
  • httpmime-4.3.jar

然后,全部都加到你的Eclipse的Java的项目中,就可以使用了。

具体做法,简介:

Eclipse中,右击项目文件夹->Build Path->Add External Archive->把上面的那些jar包都加进去,即可。

详解:

【已解决】Eclipse的java代码出错:The import org.apache cannot be resolved

转载 http://www.crifan.com/java_http_related_lib_httpclient_httpcore/

相关资料参考 http://www.cnblogs.com/jcli/category/315065.html

http://www.blogjava.net/stevenjohn/category/51822.html

Java中的http(网络处理)相关的库:HttpClient,HttpCore(转载)的更多相关文章

  1. Java中Calendar(日历)相关API举例

    Java中Calendar(日历)相关API举例,实现功能:输入一个年份和月份打印出这个月的日历. package calendarPrint; import java.util.Calendar; ...

  2. 关于Java中基本类型的长度相关基础知识

    1.  用HeapByteBuffer放int占几个byte? 占4个.而且不论你是放1还是-1还是0xffff. 因为int的长度是4个byte,HeapByteBuffer的存储又是byte数组. ...

  3. JAVA中接口与抛出异常的相关知识

    1.接口概念:接口可以理解为一种特殊的类,由全局常量和公共的抽象方法所组成. 类是一种具体实现体,而接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部数据,也不关心这些类里方法的实现细节,它只 ...

  4. Java 中的String、StringBuilder与StringBuffer的区别联系(转载)

    1 String 基础 想要了解一个类,最好的办法就是看这个类的源代码,String类源代码如下: public final class String implements java.io.Seria ...

  5. Python网络编程相关的库与爬虫基础

    PythonWeb编程 ①相关的库:urlib.urlib2.requests python中自带urlib和urlib2,他们主要使用函数如下: urllib: urlib.urlopen() ur ...

  6. 在Java中谈尾递归--尾递归和垃圾回收的比较(转载)

    我不是故意在JAVA中谈尾递归的,因为在JAVA中谈尾递归真的是要绕好几个弯,只是我确实只有JAVA学得比较好,虽然确实C是在学校学过还考了90+,真学得没自学的JAVA好 不过也是因为要绕几个弯,所 ...

  7. Java中的break,continue关于标签的用法(转载)

    Java的控制循环结构中是没有关键字goto的,这种做法有它的好处,它提高了程序流程控制的可读性,但是也有不好的地方,它降低了程序流程控制的灵活性,所以说,“上帝是公平的”.所以,Java为了弥补这方 ...

  8. java中的==、equals()、hashCode()源码分析(转载)

    在java编程或者面试中经常会遇到 == .equals()的比较.自己看了看源码,结合实际的编程总结一下. 1. ==  java中的==是比较两个对象在JVM中的地址.比较好理解.看下面的代码: ...

  9. Java中涉及线程和并发相关的内容

    1:线程池 与每次需要时都创建线程相比,线程池可以降低创建线程的开销,这也是因为线程池在线程执行结束后进行的是回收操作,而不是真正的 销毁线程. 2:ReentrantLock ReentrantLo ...

  10. Java中的文件和流相关知识

    1. File File类可以使用文件路径字符串来创建File实例,该文件路径可以是绝对路径或相对路径 File类的list()方法中可以接收一个FilenameFilter参数,通过该参数可以只列出 ...

随机推荐

  1. 使用国内源部署ceph

    由于网络方面的原因,Ceph的部署经常受到干扰,通常为了加速部署,基本上大家都是将Ceph的源同步到本地进行安装.根据Ceph中国社区的统计,当前已经有国内的网站定期将Ceph安装源同步,极大的方便了 ...

  2. HTTPS的页面发送不了HTTP请求?——关于混合内容

    我们都知道HTTPS的页面是发送不了HTTP请求的,那么是什么原因导致HTTPS页面不能发送HTTP请求呢?如果有发送的需求,怎么样才能发送?最近刚好遇到了这个问题,而且搜了半天没搜到靠谱的答案,所以 ...

  3. 一个不明觉厉的貌似包含很多linux资料索引的网页

    http://man.lupaworld.com/content/other/Linux/linuxmanage/node108.html 貌似是个官方的doc之类的...

  4. 自适应共振理论网络 ART

    引言 自适应共振理论的发源与现状 1976年, 美国 Boston 大学学者 G. A.Carpenter 提出自适应共振理论(Adaptive Res-onance Theory , ART ), ...

  5. C# List对于自定义对象的比较判断

    实际开发中,我们经常会把同类型的一系列对象封装到List集合中,当我们有需要在封装对象到List集合中时,排除重复的对象,这时直接使用: if(!List.Contains(obj)) { List. ...

  6. jquery 三元运算

    三元运算: 条件  ? 条件为真取此值 : 条件为假取此值; var v = $(:check).prop('checked')?faule:true; $(:check).prop('checked ...

  7. web开发-CORS支持

    一.简介 Web 开发经常会遇到跨域问题,解决方案有:jsonp,iframe,CORS 等等 1.1.CORS与JSONP相比 1.JSONP只能实现GET请求,而CORS支持所有类型的HTTP请求 ...

  8. C#模板的效率问题

    1,有拆装箱的情景时,可使用模板方式避免拆装箱,这时候使用模板比不使用效率要高很多. 2,无拆装箱的操作时,全部是值传递,使用模板会比使用基本类型慢一半

  9. ios的xxxAppDelegate.h分析

    #import "BIDAppDelegate.h" #import "BIDViewController.h" @implementation BIDAppD ...

  10. ADB Not Responding - Android Studio

    问题描述: 最近安装了Android Studio v1.0,运行的时候老是这个错误 解决方案: 网上有人说是已经有adb的进程在运行,可是打开任务管理器,找不到对应的adb 进程. 无奈之下,想到a ...