java 腾讯认证_Java 腾讯验证码平台使用实例
主要就是官方的这个图:
前端调用接口,得到腾讯发过来的几个数据,前端把这几个数据给后端,后端拿到这些数据后传给腾讯,让其判断是否正常,以及其他属性。
程序运行截图如下:
点击登录后,拖动正确进行跳转,拖动错误就重新输入
看看后台的打印:
这个是腾讯反馈的数据,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
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 腾讯验证码平台使用实例相关推荐
- Java笔记-腾讯验证码平台使用实例
主要就是官方的这个图: 前端调用接口,得到腾讯发过来的几个数据,前端把这几个数据给后端,后端拿到这些数据后传给腾讯,让其判断是否正常,以及其他属性. 程序运行截图如下: 点击登录后,拖动正确进行跳转, ...
- java百度地图坐标_java腾讯地图与百度地图坐标转换
/** * 坐标转换,腾讯地图转换成百度地图坐标 * @param lat 腾讯纬度 * @param lon 腾讯经度 * @return 返回结果:经度,纬度 */ public String m ...
- java token身份认证_java – 基于Spring Security Token的身份验证
以下是我能够实现基于令牌的身份验证和基本身份验证的方法 SpringSecurityConfig.java @Configuration @EnableWebSecurity public class ...
- JAVA实现negotiate认证_Java SSO windows AD spring4 – Negotiate Header无效:
嗨,我正在尝试使用JAVA和spring设置SSO.为此,我使用此文档:http://docs.spring.io/spring-security-kerberos/docs/1.0.0.RELEAS ...
- java ladp用户认证_java – LDAP:如何使用连接详细信息验证用户身份
我无法使用LDAP对用户进行身份验证.我有以下细节: URL=ldap://10.10.10.10:389 LDAP BASE:DC=lab2,DC=ins LDAP Bind Account: CN ...
- java.exe 安装程序_java实现可安装的exe程序实例详解
java实现可安装的exe程序实例详解 通过编写Java代码,实现可安装的exe文件的一般思路: 1.在eclipse中创建java项目,然后编写Java代码,将编写好的Java项目导出一个.jar格 ...
- java扑克发牌程序_Java多线程实现扑克牌发牌程序实例
import java.util.*; import java.awt.*; import javax.swing.*; public class CardBuffer ...
- java技术详解_Java反射技术详解及实例解析
前言 相信很多人都知道反射可以说是Java中最强大的技术了,它可以做的事情太多太多,很多优秀的开源框架都是通过反射完成的,比如最初的很多注解框架,后来因为java反射影响性能,所以被运行时注解APT替 ...
- java构造器调用构造器_java中构造器内部调用构造器实例详解
可能为一个类写了多个构造器,有时可能想在一个构造器里面调用另外一个构造器,为了减少代码的重复,可用this关键字做到这一点. public class Flower { private String ...
最新文章
- Java Day02-1
- python中停车收费问题_使用CKRule实现停车场收费计算
- 脱胎于BTC的BCH,适合你的道路在哪里?
- 霍夫变换概述和标准霍夫变换
- python都能干什么-python都能做什么
- Ubuntu16.04 python2.7升级python3.5
- libboost_filesystem.so: undefined reference to
- java调用子系统代码_深入理解JAVA虚拟机-Idea远程执行本地Java代码 - Java 技术驿站-Java 技术驿站...
- 在C#程序设计中使用Win32 API
- delphi 7 学习步骤
- [蓝桥杯][2013年第四届真题]危险系数-dfs+图的遍历
- java堆栈有序无序,浅谈Java并发编程系列(四)—— 原子性、可见性与有序性
- 模板方法设计模式的原理及测试代码(手写JdbcTemplate)
- Python:企业微信批量发工资条工具 -应用消息发送模块
- matlab绘制vti群速度,VTI介质中P波相速度与群速度的比较
- Codeforces Round #521 (Div. 3) 	E - Thematic Contests (二分 + STL)
- 计算机锁屏域策略,域组策略锁屏界面设置不生效
- 商标注册流程,山东商标注册去哪好
- 算法之红黑树/JAVA
- 从文本进度条开始:谈谈自己缺失的Python基础知识