Android 开发学习记录(4)---- httpclient使用(三)
2014-08-26 13:57
477 查看
之前在Android 开发学习记录(3)---- httpclient使用(二)中介绍了如何使用httpclient访问需要账户登录的网址,当然首先是要有一个合法的登录账户。
但是现在好多网站在登录时不仅仅要求你输入账号、密码,还要求你输入网站随机产生的一个验证码,一般是以图片形式出现。
这次主要就给自己的笔记里记下当时我在访问需要图片验证码时,如何使用 httpclient 的。(当然这里所说的验证信息还是需要用户来手动填写的,本人菜鸟不会图像识别、、、、)注:这种方法并不能保证所有的网站都能如此登录
首先你要知道你要访问的网址都需要填写哪些信息,千万不要仅仅只看网站登录栏的那些信息,这是不够的。需要分析你在登录时到底都发送出那些信息,可以用chrome浏览器或者WireShark抓包软件都是可以做到的。下面就用chrome来演示
首先模拟登陆自己的目标网站(www.你的网址.com),打开“开发者工具”,用自己的账号密码登陆网站。这时你会在开发者工具栏中发现这样一条记录:
从中可以发现这是一个以POST方式发送给目标网站的信息,点进去可以查看里面的详细信息,找到如下信息:
这里就可以发现,在POST给网址的内容中,表单项不仅仅有 id 与 pw(也就是password)项目,这两项是用户手动输入的账户与密码。还有 authm 和 trust_root 这两项,这就是隐藏的需要 POST 的表单信息。验证码这类的同样会出现在这块儿。其中有些数据看起来很随机,需要从之前GET获取到的网址中寻找关联。
此时,以上面截图为例,这种带有隐藏信息的表单填写如下:
但是现在好多网站在登录时不仅仅要求你输入账号、密码,还要求你输入网站随机产生的一个验证码,一般是以图片形式出现。
这次主要就给自己的笔记里记下当时我在访问需要图片验证码时,如何使用 httpclient 的。(当然这里所说的验证信息还是需要用户来手动填写的,本人菜鸟不会图像识别、、、、)注:这种方法并不能保证所有的网站都能如此登录
首先你要知道你要访问的网址都需要填写哪些信息,千万不要仅仅只看网站登录栏的那些信息,这是不够的。需要分析你在登录时到底都发送出那些信息,可以用chrome浏览器或者WireShark抓包软件都是可以做到的。下面就用chrome来演示
首先模拟登陆自己的目标网站(www.你的网址.com),打开“开发者工具”,用自己的账号密码登陆网站。这时你会在开发者工具栏中发现这样一条记录:
从中可以发现这是一个以POST方式发送给目标网站的信息,点进去可以查看里面的详细信息,找到如下信息:
这里就可以发现,在POST给网址的内容中,表单项不仅仅有 id 与 pw(也就是password)项目,这两项是用户手动输入的账户与密码。还有 authm 和 trust_root 这两项,这就是隐藏的需要 POST 的表单信息。验证码这类的同样会出现在这块儿。其中有些数据看起来很随机,需要从之前GET获取到的网址中寻找关联。
此时,以上面截图为例,这种带有隐藏信息的表单填写如下:
client.getParams().setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.BEST_MATCH); HttpPost request = new HttpPost("http://ssqzfw.xidian.edu.cn/modules/swyh/servlet/login"); List<NameValuePair> postParameters = new ArrayList<NameValuePair>(); /********************header头设置******************************/ postParameters.add(new BasicNameValuePair("account","XXXXXXXXX")); postParameters.add(new BasicNameValuePair("password","XXXXXXXXX")); postParameters.add(new BasicNameValuePair("authm","XXXXXXXXX")); postParameters.add(new BasicNameValuePair("trust_root","XXXXXXXXX")); /**************************************************/ UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParameters); request.setEntity(formEntity); HttpResponse response = client.execute(request); String webInformation_1 = readWeb(response);
相关文章推荐
- Android 开发学习记录(3)---- httpclient使用(二)
- Android 开发学习记录(2)---- httpclient使用(一)
- android 学习笔记 使用HttpClient
- 【安卓开发】在Android 6.0下继续使用HttpClient
- Async-http-client 在android 6.0后无法正常使用的问题 - 记录
- 为 Android 开发访问 JAX-RS Web 服务的 Apache HttpClient 客户端 学习创建 Apache HttpClient Android 客户端
- Android 学习之--HttpClient详细使用
- eclipse IDE/android开发 使用学习记录
- 使用Kotlin开发android学习记录(一)
- Android学习记录(二十八)--Android apache httpclients的使用。
- Android开发-基础网络组件(2)使用ApacheHttpClient登陆-AndroidStudio
- android菜鸟学习笔记24----与服务器端交互(一)使用HttpURLConnection和HttpClient请求服务端数据
- Android学习指南之三十:使用URLConnection和HttpClient访问网络的方法
- 【转】Android使用SQLiteDatabase操作SQLite数据库【学习记录】
- android HttpClient 的使用
- 【Android学习日记】(十三) Http Get使用简单例子
- Android开发之Http通信HttpClient接口
- 【转】Android使用嵌入式关系型SQLite数据库存储数据【学习记录】
- android应用开发的系列学习记录
- 使用Eclipse开发Android源码___http://www.wuphone.com/859