在制作 android 软件时,因为要设计抓取网页信息,所以用到了可以现成使用的 httpclient 库类。使用 httpclient 来模拟浏览网页的动作。
httpclient 主要模拟HTTP的 get 请求和 post 请求。首先要了解HTTP中的get与post:
1、根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。Get是向服务器发索取数据的一种请求
2、根据HTTP规范,POST表示可能修改变服务器上的资源的请求。Post是向服务器提交数据的一种请求
按我浅显的理解,get 一般是在直接访问获取网页信息;而 post 则可以通过填写表单信息后再访问某些网页信息。
在我的 android 软件开发过程中,get 主要用于获取要访问的网址信息,而当某些网址需要进行账号登陆时,则用 post 完成登陆账号填写密码等任务。
这里有篇博文对HTTP中的get 与post 进行了详细介绍,我就当个宣传员,把他博客地址贴上好了http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html
既然对get 与 post 有所了解了,接下来就可以研究使用httpclient 了,下面主要介绍一下httpclient一些最基本的操作,最近真的比较忙,抽空会在以后的博文中慢慢写详细些。
一、httpclient 之 get
HttpClient client = new DefaultHttpClient();//新建一个HttpClient对象
HttpGet request = new HttpGet("http://blog.csdn.net/oohaha_123");//新建一个HttpGet请求
HttpResponse response = client.execute(request);//client执行访问网址的操作,返回信息以HttpResponse格式存放在response中
上面3行代码已经完成了访问网址的功能了(好简单有木有!)
既然已经获得网页信息了,但又该如何显示出来呢?下面这个自定义的函数就是将得到的 response 转为 string 形式,将网页源码以字符串的形式展现出来:
public String readWeb(HttpResponse response)throws ClientProtocolException, IOException{
BufferedReader in = null;
in = new BufferedReader(new InputStreamReader(response.getEntity().getContent(),"utf-8")); //要根据访问网址的编码更改对应的解码方式,这里我用的是UTF-8。
StringBuffer string = new StringBuffer("");
String lineStr = "";
while( (lineStr = in.readLine()) != null)
{
string.append(lineStr + "\n");
}
in.close();
String web = string.toString();
return web;
}
现在我就得到我想要获取的网页的全部源码信息了。
二、httpclient 之 post
这里我先不介绍用 post 完成表单填写等功能。等以后配合具体例子再一起说明,下面就简单贴出来用 httpclient 中post 完成上面get 相同功能的源码,其实几乎完全一样,只是将HttpGet 改为 HttpPost 罢了。
HttpClient client = new DefaultHttpClient();
HttpPost request = new HttpPost("http://blog.csdn.net/oohaha_123");
HttpResponse response = client.execute(request);
读取网页信息的代码一模一样,就不在这里重复了。
上面只是介绍了httpclient 最基本的操作,其实httpclient还能做很多事情,我也只接触到皮毛而已。以后有时间会配合实例写写它的使用方法,抱怨一下:毕设盲审伤不起。。。