首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >调用语音验证码的接口与图形验证码框架

调用语音验证码的接口与图形验证码框架

作者头像
端碗吹水
发布2020-09-23 11:24:29
1.6K0
发布2020-09-23 11:24:29
举报

调用语音验证码的接口

  语音验证码就是以打电话的方式,通过电话语音播报的方式把验证码告诉给用户,语音验证码使用的不多。

因为第三方的接口价格相对于短信验证码来说比较贵,并且效果一般,只能发送纯数字的语音,而且还没有干扰音,这种语音很容易就被识别了,安全性上也比较低。

如果想要做好一个语音验证码,就得自己单独去做这个模块的开发,需要花费的成本比较大,一般大部分的应用都没有这个必要去开发这个模块,所以语音验证码就不怎么有人使用。本文也是演示简单的调用一下第三方的接口,作为示例。

准备工作:

  1. 先申请一个语言验证码的API(我这里申请的是聚合的),首次申请有3次免费的调用机会:

然后会让你认证,如果只是临时做个试验的话,可以选择不认证:

申请之后,查看一下接口的说明文档:

需要按照文档里的说明规则去调用这个接口:

完成以上步骤准备好接口后,在编写代码之前先导入一个JSON的jar包,因为API调用后返回结果的形式是JSON格式,所以需要JSON的jar包来解析JSON的数据:

完成准备工作后,就可以开始编写具体的代码了,因为调用次数只有3次,我就只写一个简单的类作为演示:

发送成功:

发送失败:

图形验证码组件

  所谓验证码组件就是拿别人写好的第三方jar包来用,我这里演示的是jcaptcha的组件。

JCaptcha 简介:

  CAPTCHA 全称 Completely Automated Public Turing Test to Tell Computers and Humans Apart,最早作为卡内基梅隆大学的一个科研项目,用于生成一个人类容易通过而计算机难以通过的测试,目前广泛应用于网络应用,用于阻止机器人发布垃圾信息。JCaptcha 即为 Java 版本的 CAPTCHA 项目,其是一个开源项目,支持生成图形和声音版的验证码,在生成声音版的验证码时,需要使用到 FreeTTS。目前,JCaptcha 官方网站显示有 2.0 版本,但二进制版只有 1.0 版可供下载,本文亦是基于 1.0 版本展开。

一个简单的图形验证码:

  JCaptcha 提供了一定的可扩展能力,用于开发人员创建出复杂的图形验证码。下面,首先利用 JCaptcha 提供的 API 来快速开发一个简单示例。本文的示例为 Web 应用,可以运行在 Tomcat 和 WebSphere 上,除了准备 Web 服务器外,我们还需要准备好 JCaptcha 运行时所必须的 Jar 包。

以下是需要用到的jar包,这些jar包都可以在maven的中央仓库中下载到:

创建一个web工程,把jar导入到lib目录下,然后配置web.xml文件,配置语法如下:

配置完web.xml之后实际上,直接访问这个jcaptcha.jpg就可以看到验证码的效果了:

  这是默认的效果,实际上如果你不需要有变动的话,就可以直接这样使用。

  如果你需要去自定义这个图片验证码样式的话,就得自己专门写一个类来进行调整,代码示例:

运行结果:

ServletConfig和ServletContext对象

  ServletConfig可以用于得到web.xml中配置的参数信息,例如配置数据库参数、系统参数信息等等。因为我们可以把一些参数信息配置在web.xml的servlet标签内,通过ServletConfig对象和init方法就可以在Servlet启动的时候就可以获得这些配置信息。

简单的配置语法:

在 <init-param> 标签内配置初始化参数信息,<param-name> 标签配置参数信息的名称,<param-value> 则是这个名称的值。

Servlet代码:

ServletConfig对象中没有什么方法,这个对象主要就是用于获得参数信息而已。

运行结果:

配置多个参数信息:

运行结果:

  ServletContext对象是一个全局对象,在任何情况下获得的对象都是同一个,服务器开始,这个对象就会存在,服务器关闭,ServletContext才会被释放。ServletContext可以像session对象一样用来存储一些数据信息,与session不同的是ServletContext存储时间是永久的,而session则是默认有30分钟的过期时间。

关于Servlet中的三个可以存储用户数据的对象:

  request对象一个用户可有多个,其生命周期在请求结束时结束;session对象一个用户一个,其生命周期在默认的情况下,只会存在30分钟;而servletContext,则是所有用户共用一个,其生命周期直到服务器关闭才结束。所以为了节省空间,提高效率,ServletContext中,要放必须的、重要的、所有用户需要共享的线程又是安全的一些信息,不然只会徒增服务器压力。

获得ServletContext对象的方式:

  request.getServletContext()  // 通过request对象获得

  request.getSession().getServletContext()  // 通过Session对象获得

  this.getServletContext()  // 通过Servlet对象获得

  this.getServletConfig().getServletContext() // 通过ServletConfig对象获得

一般情况下,常用的方式是// 通过Servlet对象获得。

ServletContext对象中的一些常见的方法:

context.getAttribute(arg0);   // 得到属性

context.setAttribute(arg0, arg1);  // 添加属性

context.removeAttribute(arg0);  // 删除属性

context.getServlets();  //得到服务器中的所有Servlet

context.addServlet("", "");  // 添加Servlet

context.addFilter("", "");   // 添加过滤器

context.addListener(arg0);   // 添加监听器

getServerInfo()  // 得到web服务器的信息

getContextPath()  // 得到web工程的路径

getRealPath("WEB-INF")  // 得到指定文件或目录的路径

getSessionTimeout()  // 得到Session的过期时间

代码示例:

运行结果:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-11-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档