[音乐] hi,你好。
下面我们一起来学习网络编程。
那计算机发展到现在呢,可以说网络呢是一个重要的一个 方向。
那么这个网络编程呢也是相当重要的。
我们下面呢先来看看网络信息的获取。
网上呢有大量的信息,那我们怎么来获取它,怎么应用它呢?
我们前面讲到了一个类很重要叫URL类,那么这个类呢 它可以进行网络信息的获取。
就我们前面包括用它来做网络 爬虫程序。
那么这个呢,它本身URL表示呢uniform resource locator, 就是统一资源地址。
那或者我们讲,简单地说呢就是网址。
那它读取网页内容呢,一个是创建一个网址的这个对象,
然后呢第二步呢它有一个openStream,叫做打开它的流
,那么用这个流呢, 我们可以把它当成一个InputStream,或者呢把它封装成一个
InputStreamReader,可以读取它里面的那个网页内容。
所以这是一个很常见的编程方式。
URL呢 除了可以访问http呢还可以访问ftp等等。
所以它的功能啊还是很强大。
但是即使这样呢有的时候呢用URL用起来呢 还是不够,并且呢有的时候也不很方便。
那么更复杂的网络信息获取呢可以使用第三方的一些库。
这些库呢最常用的一个呢就是用Apache里有一个开源的这个库呢叫httpcli- ent。
Apache上面呢有很多这种开源的这种库, 那么我们这里用的httpclient呢,或者简称为hc,
它实际上呢是针对我们网络信息获取呢最常用的 一个库。
那在这里面,我们为了要用它呢,需要把这个库呢加入到我们的系统里头。
那一种呢就是如果我们用普通的编程环境,用命令行的话,那我们就需要把它加到 classpath里面。
如果是我们在用极正开发环境,比如说Eclipse里面呢, 我们需要把它放到这个Build
Path, 就是它的构建路径里头有一个,
有一个叫做Add External Archive,就是添加外部的jar文件。
那么NetBeans也是一样的,它有
项目-库-点右键,有一个添加jar文件,这两个是类似的。
后面呢我们会遇到很多类似的这种就是需要引入外部库的这种
程序,那么你都可以按照这个方式来添加。
那我们下面呢看一个那个例子。
那这个 hc这个库呢它用起来很方便,当然它也可以很复杂。
最简单的一个呢我们就是用这个Request这样一个类, Request.Get就可以得到网页的信息。
那么poster呢 就是另一种提交并且获取网页信息的方法。
那么并且呢它用起来很方便在于呢它是可以直接, 就get然后点,点什么,一直这么一路点下去,
这个呢也就是我们说的这种流式操作或者链式操作,就一路那么点, 然后呢接着这么写下去。
这是java里面很常见的一种,我们叫做设计模式,用这种 方式来访问很方便。
那么它.Get这么一个网址,然后execute呢
就是真正地执行这个网络信息的获取,然后returnContent 就是得到它的结果。
我们如果是网页呢, 就asString。
那我们下面看一个例子呢就是这个 获取那个股票信息。
请看这里, 为了方便呢,我这里用这个Eclipse来
演示,当然你也可以用命令行了,或者NetBeans或者其他工具。
那在这里面呢,为了引用这个库呢,我们下载下来 以后呢,要把它添加到这个项目里头。
项目点右键里面有一个呢Build Path,
里面有一个添加外部的jar文件,外部的archive文件,也就是 归档文件了,就是我们的库。
那添加了以后呢,它就放到这个 目录下,叫做引用的libraries,引用库。
那在这里面以后呢,我们编程呢 就很方便了。
下面我们看看,这里比如说有一个股票代码, 深圳的或者上海的,然后呢
我们用Get这个网址呢,这里用的sinajs.cn 这个网址,然后它有参数,这个参数,加一个股票代码。
execute( ).returnContent( ).asString( )就 得到一个网页的内容,我们显示出来呢就是下面这个样子的。
它包括这个股票的名字啊,然后呢这个 当天的价格啊等等一系列参数。
那我们还可以呢 获取这个图,股票的这个走势图。
当然在这里面 有一个iii组图,比如说分,分钟的图,日iii线, 等等。
然后在这里面呢也有一个网址,这个网址呢也是要用到一些参数,包括
这个图表的类型以及呢这后面呢有一个股票的那个代码 等等。
那这个有个网址以后,我们现在要用的呢有可以用 两种方式,一个是呢用Request.Get.Execute.returnCont-
ent, 然后这里呢asString作为一个流,
作为一个流呢然后用ImageIO.read,甚至更简单
因为ImageIO呢是图片的输入输出这个类,直接read一个网址 就可以。
然后我们可以把用ImageIO.write 把它写到一个文件里头。
这就是我们看到的一个股票图。
这个图呢就是这个样子。
所以总的呢 它用了HttpClient这个外部库。