主要就是官方的这个图:

前端调用接口,得到腾讯发过来的几个数据,前端把这几个数据给后端,后端拿到这些数据后传给腾讯,让其判断是否正常,以及其他属性。

程序运行截图如下:

点击登录后,拖动正确进行跳转,拖动错误就重新输入

看看后台的打印:

这个是腾讯反馈的数据,response为1说明是正常,风险等级为0

程序结构如下:

源码如下:

LoginServlet.java

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

import java.net.URLEncoder;

import com.alibaba.fastjson.JSON;

import com.alibaba.fastjson.JSONObject;

import org.apache.http.HttpEntity;

import org.apache.http.client.methods.CloseableHttpResponse;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.impl.client.CloseableHttpClient;

import org.apache.http.impl.client.HttpClients;

import org.apache.http.util.EntityUtils;

@WebServlet(value = "/login")

public class LoginServlet extends HttpServlet{

private static final String APP_ID = "xxxxxxxxxx";

private static final String APP_SECRET = "xxxxxxxxxx**";

private static final String VERIFY_URI = "https://ssl.captcha.qq.com/ticket/verify?aid=%s&AppSecretKey=%s&Ticket=%s&Randstr=%s&UserIP=%s";

public static int verifyTicket(String ticket, String rand, String userIp) {

CloseableHttpClient httpclient = HttpClients.createDefault();

HttpGet httpGet;

CloseableHttpResponse response = null;

try {

httpGet = new HttpGet(String.format(VERIFY_URI,

APP_ID,

APP_SECRET,

URLEncoder.encode(ticket, "UTF-8"),

URLEncoder.encode(rand, "UTF-8"),

URLEncoder.encode(userIp, "UTF-8")

));

response = httpclient.execute(httpGet);

HttpEntity entity = response.getEntity();

if (entity != null) {

String res = EntityUtils.toString(entity);

System.out.println(res); // 临时输出

JSONObject result = JSON.parseObject(res);

// 返回码

int code = result.getInteger("response");

// 恶意等级

int evilLevel = result.getInteger("evil_level");

// 验证成功

if (code == 1) return evilLevel;

}

} catch (java.io.IOException e) {

// 忽略

} finally {

try {

response.close();

} catch (Exception ignore) {

}

}

return -1;

}

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

this.doPost(request, response);

}

protected void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

//验证

String ticket = request.getParameter("Ticket");

String randstr = request.getParameter("Randstr");

String userIP = request.getRemoteAddr();

verifyTicket(ticket, randstr, userIP);

response.sendRedirect("success.jsp");

}

}

web.xml

/p>

"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

"http://java.sun.com/dtd/web-app_2_3.dtd" >

Archetype Created Web Application

index.jsp

qq

function vail(){

var vailCode = new TencentCaptcha('2047017221', function(res){

if(res.ret == 0){

var form = document.getElementById("form1");

var ticketInput = document.getElementById("Ticket");

var randstrInput = document.getElementById("Randstr");

ticketInput.value = res.ticket;

randstrInput.value = res.randstr;

// console.log("res.ticket:" + res.ticket);

// console.log("res.randstr:" + res.randstr);

form.submit();

}

else{

alert("验证出错!");

}

});

vailCode.show();

}

success.jsp

Title

SUCCESS

porn.xml

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.example

wxDemo

1.0-SNAPSHOT

war

com.alibaba

fastjson

1.2.62

org.apache.httpcomponents

httpcore

4.4.5

org.apache.httpcomponents

httpclient

4.5.11

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

java 腾讯认证_Java 腾讯验证码平台使用实例相关推荐

  1. Java笔记-腾讯验证码平台使用实例

    主要就是官方的这个图: 前端调用接口,得到腾讯发过来的几个数据,前端把这几个数据给后端,后端拿到这些数据后传给腾讯,让其判断是否正常,以及其他属性. 程序运行截图如下: 点击登录后,拖动正确进行跳转, ...

  2. java百度地图坐标_java腾讯地图与百度地图坐标转换

    /** * 坐标转换,腾讯地图转换成百度地图坐标 * @param lat 腾讯纬度 * @param lon 腾讯经度 * @return 返回结果:经度,纬度 */ public String m ...

  3. java token身份认证_java – 基于Spring Security Token的身份验证

    以下是我能够实现基于令牌的身份验证和基本身份验证的方法 SpringSecurityConfig.java @Configuration @EnableWebSecurity public class ...

  4. JAVA实现negotiate认证_Java SSO windows AD spring4 – Negotiate Header无效:

    嗨,我正在尝试使用JAVA和spring设置SSO.为此,我使用此文档:http://docs.spring.io/spring-security-kerberos/docs/1.0.0.RELEAS ...

  5. java ladp用户认证_java – LDAP:如何使用连接详细信息验证用户身份

    我无法使用LDAP对用户进行身份验证.我有以下细节: URL=ldap://10.10.10.10:389 LDAP BASE:DC=lab2,DC=ins LDAP Bind Account: CN ...

  6. java.exe 安装程序_java实现可安装的exe程序实例详解

    java实现可安装的exe程序实例详解 通过编写Java代码,实现可安装的exe文件的一般思路: 1.在eclipse中创建java项目,然后编写Java代码,将编写好的Java项目导出一个.jar格 ...

  7. java扑克发牌程序_Java多线程实现扑克牌发牌程序实例

    import java.util.*; import java.awt.*; import javax.swing.*; public class CardBuffer                 ...

  8. java技术详解_Java反射技术详解及实例解析

    前言 相信很多人都知道反射可以说是Java中最强大的技术了,它可以做的事情太多太多,很多优秀的开源框架都是通过反射完成的,比如最初的很多注解框架,后来因为java反射影响性能,所以被运行时注解APT替 ...

  9. java构造器调用构造器_java中构造器内部调用构造器实例详解

    可能为一个类写了多个构造器,有时可能想在一个构造器里面调用另外一个构造器,为了减少代码的重复,可用this关键字做到这一点. public class Flower { private String ...

最新文章

  1. Java Day02-1
  2. python中停车收费问题_使用CKRule实现停车场收费计算
  3. 脱胎于BTC的BCH,适合你的道路在哪里?
  4. 霍夫变换概述和标准霍夫变换
  5. python都能干什么-python都能做什么
  6. Ubuntu16.04 python2.7升级python3.5
  7. libboost_filesystem.so: undefined reference to
  8. java调用子系统代码_深入理解JAVA虚拟机-Idea远程执行本地Java代码 - Java 技术驿站-Java 技术驿站...
  9. 在C#程序设计中使用Win32 API
  10. delphi 7 学习步骤
  11. [蓝桥杯][2013年第四届真题]危险系数-dfs+图的遍历
  12. java堆栈有序无序,浅谈Java并发编程系列(四)—— 原子性、可见性与有序性
  13. 模板方法设计模式的原理及测试代码(手写JdbcTemplate)
  14. Python:企业微信批量发工资条工具 -应用消息发送模块
  15. matlab绘制vti群速度,VTI介质中P波相速度与群速度的比较
  16. Codeforces Round #521 (Div. 3) E - Thematic Contests (二分 + STL)
  17. 计算机锁屏域策略,域组策略锁屏界面设置不生效
  18. 商标注册流程,山东商标注册去哪好
  19. 算法之红黑树/JAVA
  20. 从文本进度条开始:谈谈自己缺失的Python基础知识

热门文章

  1. 企业知识分享系统的设计与实现
  2. Android中IPC机制详解
  3. RHEL8(红帽8正式版)新特性及使用方法
  4. AI视频智能分析技术与应用(三)
  5. ubuntu下解决zip解压缩后乱码
  6. 2019 年软件开发人员必学的编程语言 Top 3
  7. 171118 逆向-再探QQ防撤回
  8. python猴子吃桃三种解法_【Python】【demo实验22】【练习实例】【猴子吃桃问题】...
  9. 上海理工大学计算机考研资料汇总
  10. windows2008系统开启snmp服务的方法教程