http作为一个网络协议可以说是现在 Internet 上使用得最多、最重要的协议了,对我们这些做程序开发的人员来说也是老朋友了。这次我要介绍的HttpClient想必大家即便是没有使用过,也肯定听过他的名字。我们知道不同的系统之间交互数据的方式有很多,例如:mq、webservice、rpc远程调用、rmi、甚至包括js的跨域访问等,而httpclient作为访问网络资源的一个工具包,也越来越多的在数据交互领域凸显出自己独有的特色。httpclient 是 Apache Jakarta Common 下的子项目,可以用来提供高效、功能丰富的访问网络资源的方式,也用作不同系统之间的数据交互。httpclient既然是个工具包,也就是说它只是封装了一些jdk里面原生的功能,从另外一个角度讲,我们使用jdk原生的方式依然可以完成httpclient所能完成的功能,httpclient只不过是在原生的jdk提供的网络访问的基础上进行封装、加强了之后,从而形成的一个工具包罢了。不管是哪种框架,框架的功能肯定没有原生的强,但是它更便捷,所以更通用。
下面是一个使用jdk再带的URL类访问网络资源的一种方式:
@Test public void test0() throws Exception{ URL url=new URL("http://www.roadjava.com"); InputStream is = url.openStream(); String cont=""; byte[] bytes=new byte[1024]; int len=0; while((len=is.read(bytes))!=-1){ cont+=new String(bytes, 0, len, "utf-8"); } System.out.println(cont); }
上面代码的含义就是获取网址http://www.roadjava.com的内容,并打印到控制台,我们来看下输出结果:
你可以访问任何的网址,当然该网址必须是有效的,那么你说到目前为止,我大概知道了httpclient可以访问某个网址并获取它的返回数据,哪些场景会用到呢?
这已经很直白了,比如:
-
在a系统需要调用b系统的某个方法b_f1()并获取这个方法的返回值,这个时候就可以使用httpclient通过网络路径来访问b_f1()方法(当然,前提是a系统与b系统网络能够联通,并能够互相访问)
-
在爬虫里面httpclient使用的更为广泛