oauth 验证码登陆
来源:互联网 发布:爱宝v6软件 编辑:程序博客网 时间:2024/06/06 19:53
oauth认证原理:本地存的不是用户密码,而是网站返回给的相当与该网站后门钥匙的密码总结:httpclient关于登陆时的验证码问题:其实就是网页的源码<input>节点上多了验证码的信息jericho-html-3.1.jar html的解析包 //访问的豆瓣是html网页对html进行面向对象的封装.//Source是jar包中的一个类 Source source = new Source(response.getEntity().getContent());//response.getEntity().getContent()是输入流 System.out.println( source.toString());//得到的是具体(错误)信息抢票神器的原理:获取网站http节点信息,生成post请求,建立一个for循环,得到的不是所要的code就一直请求判断是否需要验证码:传入网页url开启url连接 解析html(jericho-html-3.1.jar Sourse类) 迭代找到对应节点的value 例子: <img alt="请开启图片显示以获得验证码" src="/captcha/Wwlp6V4FsRJNcgVRuxy8hYdB/?size=m" /><br /> <p> <span id="captcha_block">请输入上图中的单词</span> </p> <input type="text" name="captcha-solution" tabindex="3"/> <input type="hidden" name="captcha-id" value="Wwlp6V4FsRJNcgVRuxy8hYdB"/>/** * 判断是否需要输入验证码 并返回验证码值 *这个过程相当于独立解析了html,和登陆与否没有直接联系 */public static String isNeedCaptcha(Context context) throws Exception{String loginurl = context.getResources().getString(R.string.loginurl);URL url = new URL(loginurl); URLConnection conn = url.openConnection(); Source source = new Source(conn); List<Element> elements = source.getAllElements("input"); for(Element element : elements){ String result = element.getAttributeValue("name"); if("captcha-id".equals(result)){ return element.getAttributeValue("value"); } } return null;}//验证码图片加载过程public static Bitmap getImage(String path) throws Exception{URL url = new URL(path);HttpURLConnection conn = (HttpURLConnection) url.openConnection();InputStream is = conn.getInputStream();return BitmapFactory.decodeStream(is);//直接转化为bitmap对象}String imagepath = getResources().getString(R.string.captchaurl)+result+"&size=s";//补全图片对应路径urlBitmap bitmap = NetUtil.getImage(imagepath);Message msg = new Message();msg.what=NEED_CAPTCHA;msg.obj = bitmap;//obj传递给handlerhandler.sendMessage(msg);case NEED_CAPTCHA:mCaptchaLinearLayout.setVisibility(View.VISIBLE);Bitmap bitmap = (Bitmap) msg.obj;mImageViewCaptcha.setImageBitmap(bitmap);break;更换用户帐号:将本地保存的后门密码变更new AsyncTask<Void, Void, Void>() {//onPreExecute 在异步任务执行之前调用的方法 // 运行在主线程里面的 // 初始化ui的操作@Overrideprotected void onPreExecute() {showLoading();super.onPreExecute();}// onPostExecute 在异步任务(后台任务)执行之后调用的方法 // 运行在ui线程中 , // @Overrideprotected void onPostExecute(Void result) {// doInBackground 后台执行的任务 // 方法运行在一个子线程当中 @Overrideprotected Void doInBackground(Void... params) {// 执行耗时的操作
0 0
- oauth 验证码登陆
- 腾讯第三方登陆OAuth验证 数据入库
- 登陆、注册 时候 验证码 验证登陆。
- 生成登陆验证码
- 登陆验证码
- jsp 登陆验证码
- Java 登陆验证码
- .net登陆验证码
- .net登陆验证码
- 登陆验证码-----实现
- 登陆验证码
- MVC 登陆验证码
- JavaWeb登陆验证码
- 登陆验证码
- 验证码登陆demo
- Java 登陆验证码
- jsp登陆验证码
- 登陆验证码实现
- extern用法详解
- 关于模板函数/模板类编译成DLL
- Android中style和theme巧用:Android应用程序启动时背景画面的切换
- 当心在Lib中定义非const全局变量
- ROM、RAM、DRAM、SRAM和FLASH的区别(转载)
- oauth 验证码登陆
- Android AM命令行启动程序的方法
- opencv_highgui.lib(window_w32.obj) : error LNK2019: unresolved external symbol __imp__CreateToolbarE
- 和陆琪一起侃一侃在这个看脸的世界,容貌改变命运
- [VIP会员购]卖家报名
- android 在清除应用数据后,会重复生成shortcut
- Memcache知识点梳理
- 第二章知识结构导图
- 第十八章 18.1.2节练习