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 ,也不知道是不是多余的操作、、、)
这篇讲述的登录账户的方法仅仅适用于少数要求较松的网站,很多网站都会自己添加一些隐藏的验证手段(比如验证码之类的),这就需要对登录过程进行数据挖掘了,下次有时间了再写关于涉及验证码的这一类网站登录方法。
- Android 开发学习记录(3)---- httpclient使用(二)
- Android 开发学习记录(2)---- httpclient使用(一)
- Android 开发学习记录(4)---- httpclient使用(三)
- Android学习记录(二)
- Android学习记录(二)
- android学习记录(二)
- HttpClient 4.3 开发学习(3)
- 使用Kotlin开发android学习记录(一)
- Android 闹钟 开发过程记录(二)
- Android学习记录 计算器(二)
- 《Android群英传》学习记录(二)
- Android学习(51) -- 使用HttpClient框架做GET提交
- Android学习(52) -- 使用HttpClient框架做POST提交
- android 学习随笔十二(网络:使用异步HttpClient框架)
- Android学习记录(二十八)--Android apache httpclients的使用。
- Android Camera学习记录(二) 相机App开发技术初识(一)
- Android网络编程(二)HttpClient
- Android笔记(二十三)HttpClient
- [vim 小技巧] 在vim里保存只读文件
- dfs学习总结
- 链表(三)——链表删除冗余结点&插入结点到有序链表
- 堆和栈内存扩展方向问题
- hdu 2846 Repository
- Android 开发学习记录(3)---- httpclient使用(二)
- 派生类的构造函数
- couchbase & sync-gateway
- hdu 1393 Weird Clock
- 黑马程序员 关于一个ARC引发的问题
- 有关python生成器和协程
- mq
- Codeforces 448C. Painting Fence
- POJ3258 River Hopscotch二分