一.问题
今天在Android开发中遇到这样一个问题,在输入一个url地址后,如何判断该url地址是否合法。在网上找了很多相关的博客,大多是从正则表达式或者HttpURLConnection的角度解决,试了下,效果并不好,且不够方便。最终找到了解决方法。使用Apache Commons Validator第三方库能够很方便地解决。下载地址:点击打开链接
二.Apache Commons Validator介绍
以电子方式或用户输入接收数据时的常见问题是验证数据的完整性。当不同的验证规则集合需要应用于基于区域设置的同一组数据时,这项工作是重复的,变得更加复杂。错误消息也可能因语言环境而异。该软件包尝试解决其中一些问题,并加快开发和维护验证规则。
为了使用验证器,需要以下基本步骤:
1.创建org.apache.commons.validator.Validator类的新实例。如果当前的ValidatorResources是相同的,那么只要您已经完成任何先前的验证,并且您不会一次尝试从多个线程中使用特定的Validator实例,那么当前Validator实例可能会被安全地重用。
2.添加执行验证所需的任何资源。比如JavaBean来验证。
3.调用org.apache.commons.validator.Validator上的validate方法。
Commons Validator是一个基本的验证框架,可让您为xml文件中的JavaBean定义验证规则。验证器,验证定义也可以在xml文件中定义。验证器的一个例子是定义什么方法和类将被调用来执行必需字段的验证。验证规则可以根据区域设置和规则关联的JavaBean / Form进行分组。该框架对用户定义的常量有基本的支持,可以在某些字段属性中使用。验证规则可以在xml文件中进行定义,从而使它们从您正在验证的JavaBean中抽象出来。对字段的属性引用使用Apache Commons BeanUtils(http://commons.apache.org/beanutils/)包支持嵌套属性。错误消息和错误消息的参数可以与字段验证相关联。
为了使用验证器,需要以下基本步骤:
1.创建org.apache.commons.validator.Validator类的新实例。如果当前的ValidatorResources是相同的,那么只要您已经完成任何先前的验证,并且您不会一次尝试从多个线程中使用特定的Validator实例,那么当前Validator实例可能会被安全地重用。
2.添加执行验证所需的任何资源。比如JavaBean来验证。
3.调用org.apache.commons.validator.Validator上的validate方法。
Commons Validator是一个基本的验证框架,可让您为xml文件中的JavaBean定义验证规则。验证器,验证定义也可以在xml文件中定义。验证器的一个例子是定义什么方法和类将被调用来执行必需字段的验证。验证规则可以根据区域设置和规则关联的JavaBean / Form进行分组。该框架对用户定义的常量有基本的支持,可以在某些字段属性中使用。验证规则可以在xml文件中进行定义,从而使它们从您正在验证的JavaBean中抽象出来。对字段的属性引用使用Apache Commons BeanUtils(http://commons.apache.org/beanutils/)包支持嵌套属性。错误消息和错误消息的参数可以与字段验证相关联。
三.使用(基于Android Studio)
首先下载相关的jar包,添加到Android Studio工程目录的app/libs中并配置使用。见下图:
配置成功后,build.gradle(Modile:app)的dependencies如下图:
直接在相关的判断函数中判断url合法性即可,代码十分简单,见下图:
官方文档对UrlValidator构造器的说明如下图:
要注意的一点是,url必须是全写,包含协议头,比如https://www.baidu.com,而www.baidu.com是不行的。这个后期自己可以稍作处理,除去ftp基本都是http或https。自己补全即可。
因为Url的合法性验证功能是所做的demo里的一个小功能,因此单独的demo就不写了。在此贴出该demo的工程下载链接,大家自己看,其中包含所有以下要求的功能。
此工程的实现要求如下:
四.结果展示
全部功能均实现。