Android 开发学习记录(3)---- httpclient使用(二)

来源:互联网 发布:知我药妆有假货吗 编辑:程序博客网 时间:2024/06/05 06:02

之前在Android 开发学习记录(2)---- httpclient使用(一)中介绍了httpclient最简单的模仿 HTTP 中 get 和 post 行为,这样已经可以获取到大部分网站的信息了,但对于一些需要注册登录的网站而言,单单用之前的方法就无法满足需求了。这时候就需要进一步探索了,httpclient 中已经包含了模仿账户登录的行为操作了,下面记录一下如何使用。

以最简单的登录开始,其中只涉及账号、密码两部分组成的表单信息的填写(人人网就符合这样的要求),先把源码贴上:

name = "xiaoming";password = "123456";                client.getParams().setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.BEST_MATCH);                HttpPost request = new HttpPost("http://www.renren.com/");List<NameValuePair> postParameters = new ArrayList<NameValuePair>();                /********************header头设置******************************/postParameters.add(new BasicNameValuePair("account",name));postParameters.add(new BasicNameValuePair("password",password));/**************************************************/                UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParameters);request.setEntity(formEntity);HttpResponse response = client.execute(request);                String webInformation_1 = readWeb(response);

其实和之前介绍相比,仅仅多出来一个表单填写的操作,首先定义两个字符串 name 和 password ,用来保存账号和密码,然后创建一个键值对,将账户与name对应、密码与password对应,然后向request中加入键值对信息,后续操作与之前上一篇中的 post 操作一样。

关键点:

1、必须使用 Post 操作

2、账户密码的设置

上面代码中的 readWeb() 是我自定义的一个函数,上一篇中已经提到过了,在这儿再贴一下代码:

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;}

在实际编写代码时,可以将账户与密码通过用户交互手动写入。

需要注意的是:一般涉及账户登录的网址都会有Cookie校验,之前的 httpclient 还需要自己手动添加 Cookie 完成校验工作,从httpclient 4.0开始已经不需要了,这部分工作已经可以转由 httpclient 自己来完成了。(我每次在用 httpclient 进行账户登录时,都先用 HttpGet 先访问一次目标网址来获取Cookie ,也不知道是不是多余的操作、、、)


这篇讲述的登录账户的方法仅仅适用于少数要求较松的网站,很多网站都会自己添加一些隐藏的验证手段(比如验证码之类的),这就需要对登录过程进行数据挖掘了,下次有时间了再写关于涉及验证码的这一类网站登录方法。

0 0
原创粉丝点击