Java笔记-腾讯验证码平台使用实例
发布日期:2021-06-30 10:41:30 浏览次数:2 分类:技术文章

本文共 4063 字,大约阅读时间需要 13 分钟。

主要就是官方的这个图:

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

程序运行截图如下:

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

看看后台的打印:

这个是腾讯反馈的数据,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

Archetype Created Web Application

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>    qq        

success.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>    Title

SUCCESS

porn.xml

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

 

转载地址:https://it1995.blog.csdn.net/article/details/104138143 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Java笔记-手机验证码实现
下一篇:Java笔记-编码方式创建kaptcha验证码

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月12日 08时50分17秒