很高兴来到这里。
我有个简单的问题。我正在使用simplecaptcha1.2.1.jar (http://simplecaptcha.sourceforge.net/)开发一个应用程序。
一切都很好,我知道如何使用SimpleCaptcha API和AudioCaptcha,并且我知道如何定制使用AudioCaptcha ac =新的AudioCaptcha.Builder()和Captcha =新的Captcha.Builder(400,100)创建Servlet。
我想知道的是同步出现在简单Captcha后面的图像上的文本,以及AudioCaptcha后面的音频,基本上您看到的是您播放和听到的内容。
对于如何播放和听到图像背后的文字有什么想法吗?
我会更加感激的。
诚挚的问候
马塞尔·阿吉亚尔
发布于 2016-05-05 15:10:51
对于那些使用simplecaptcha API 1.2 (如何同步Audio和Captcha Image之间的代码)的人来说,下面是我的结论,这样我们就可以共享了。
(步骤1_) AudioCaptcha最初的实现是为了只接受数字,所以,与其使用DefaultTextProducer,不如使用NumberAnswerProducer
TextProducer tp = new NumbersAnswerProducer(4,true);
new AudioCaptcha.Builder()
.addVoice()
.addAnswer(tp)
.build());您可以运行测试,如果尝试将DefaultTextProducer()传递给AudioCaptcha构建器,它将失败。
(步骤2_)为Captcha和AudioCaptcha共享相同的TextProducer
我从SimpleCaptcha的GIT克隆了这个项目,以了解更多关于"AudioCaptcha.Builder().addAnswer(tp)“和Captcha.Builder(400,100).addText(tp)的信息。
如果您尝试这样做,您将看到,即使共享相同的TextProducer tp =新NumbersAnswerProducer实例(4,true);对于这两种情况,您都会得到(我的意思是始终信任我)、图像和音频后面的不同代码。为什么?
因为在.addAnswer(tp)和.addText(tp)的实现后面,代码正在调用一个名为.getText()的方法,甚至对于同一个TextProducer实例也是如此。这个getText后面有一个随机代码:
public String getText() {
String capText = "";
for (int i = 0; i < _length; i++) {
capText += _srcChars[RAND.nextInt(_srcChars.length)];
}
return capText;
}因此,即使使用相同的TextProducer实例,每次调用.addAnswer(tp)和.addText(tp)时也会有不同的代码,因为在这些人后面,他们将调用getText()。
最后,我发现解决这个问题的一种方法是,我必须在TextProducer后面创建自己的TextProducer()实现,以便对Captcha和AudioCaptcha都具有相同的价值。
诚挚的问候
https://stackoverflow.com/questions/37033324
复制相似问题