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
<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app><display-name>Archetype Created Web Application</display-name> </web-app>index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head><title>qq</title><script src="https://ssl.captcha.qq.com/TCaptcha.js"></script><script type="text/javascript">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();}</script> </head> <body> <form id="form1" method="post" action="login"><div><input id="Ticket" name="Ticket" type="hidden" value=""><input id="Randstr" name="Randstr" type="hidden" value=""><input type="button" value="登錄" id="btnOK" onclick="vail()" /></div> </form> </body> </html>success.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body> <h1>SUCCESS</h1> </body> </html>porn.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"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"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>wxDemo</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><dependencies><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.62</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpcore</artifactId><version>4.4.5</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.11</version></dependency></dependencies></project>?
總結
以上是生活随笔為你收集整理的Java笔记-腾讯验证码平台使用实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端笔记-vue cli中使用route
- 下一篇: Java获取成员变量构造函数信息