Java微信二次开发(一) Java微信请求验证功能
发布时间 - 2026-01-11 00:49:59 点击率:次准备用Java做一个微信二次开发项目,把流程写在这里吧。

第一篇,做微信请求验证
需要导入库:servlet-api.jar
第一步:新建包com.wtz.service,新建类LoginServlet.java
package com.wtz.service;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.wtz.util.ValidationUtil;
/**
* @author wangtianze QQ:864620012
* @date 2017年4月17日 下午8:11:32
* <p>version:1.0</p>
* <p>description:微信请求验证类</p>
*/
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("get请求。。。。。。");
//1.获得微信签名的加密字符串
String signature = request.getParameter("signature");
//2.获得时间戳信息
String timestamp = request.getParameter("timestamp");
//3.获得随机数
String nonce = request.getParameter("nonce");
//4.获得随机字符串
String echostr = request.getParameter("echostr");
System.out.println("获得微信签名的加密字符串:"+signature);
System.out.println("获得时间戳信息:"+timestamp);
System.out.println("获得随机数:"+nonce);
System.out.println("获得随机字符串:"+echostr);
PrintWriter out = response.getWriter();
//验证请求确认成功原样返回echostr参数内容,则接入生效,成为开发者成功,否则失败
if(ValidationUtil.checkSignature(signature, timestamp, nonce)){
out.print(echostr);
}
out.close();
out = null;
}
}
第二步:新建包com.wtz.util,新建类Validation.java
package com.wtz.util;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
/**
* @author wangtianze QQ:864620012
* @date 2017年4月17日 下午8:35:57
* <p>version:1.0</p>
* <p>description:微信请求校验工具类</p>
*/
public class ValidationUtil {
private static String token = "wangtianze";
public static boolean checkSignature(String signature,String timestamp,String nonce){
//1.将token,timestamp,nonce三个参数进行排序
String[] str = new String[]{token,timestamp,nonce};
Arrays.sort(str);
//2.将三个参数字符串拼接成一个字符串
StringBuilder buff = new StringBuilder();
for(int i=0;i<buff.length();i++){
buff.append(str[i]);
}
//3.进行sha1加密
MessageDigest md = null;
String result = "";
try {
md = MessageDigest.getInstance("SHA-1");
byte[] data = md.digest(buff.toString().getBytes());
//将字节数组转换成字符串
result = bytesToString(data);
System.out.println("加密后的字符串为:"+result);
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result!=null?(result.equals(signature.toUpperCase())):false;
}
/**
* 将字节数组转换成十六进制字符串
* @param byteArray
* @return
*/
private static String bytesToString(byte[] byteArray){
String stringDigest = "";
for(int i=0;i<stringDigest.length();i++){
stringDigest += byteToHexString(byteArray[i]);
}
return stringDigest;
}
/**
* 将一个字节转换为十六进制字符串
* @param mByte
* @return
*/
private static String byteToHexString(byte mByte){
char[] digit = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
char[] temp = new char[2];
temp[0] = digit[(mByte>>>4) & 0X0F];
temp[1] = digit[mByte & 0X0F];
String str = new String(temp);
return str;
}
}
第一天就做了这些,完成了微信请求验证的功能。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Java微信二次开发
# Java微信开发
# Java微信请求验证
# Java发送https请求并跳过ssl证书验证方法
# Java中如何模拟HTTP请求并验证功能
# 随机数
# 转换成
# 下午
# 做一个
# 写在
# 转换为
# 第二步
# 就做
# 第一篇
# 大家多多
# 开发项目
# 准备用
# 完成了
# digit
# version
# gt
# lt
# wangtianze
# author
# ValidationUtil
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
JS弹性运动实现方法分析
如何用低价快速搭建高质量网站?
Bootstrap整体框架之JavaScript插件架构
zabbix利用python脚本发送报警邮件的方法
如何快速搭建FTP站点实现文件共享?
jquery插件bootstrapValidator表单验证详解
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
php json中文编码为null的解决办法
Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
Firefox Developer Edition开发者版本入口
Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
如何构建满足综合性能需求的优质建站方案?
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】
Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】
如何用PHP工具快速搭建高效网站?
奇安信“盘古石”团队突破 iOS 26.1 提权
再谈Python中的字符串与字符编码(推荐)
利用python获取某年中每个月的第一天和最后一天
谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程
Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践
Laravel Blade模板引擎语法_Laravel Blade布局继承用法
🚀拖拽式CMS建站能否实现高效与个性化并存?
如何在IIS管理器中快速创建并配置网站?
个人网站制作流程图片大全,个人网站如何注销?
Laravel distinct去重查询_Laravel Eloquent去重方法
UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】
lovemo网页版地址 lovemo官网手机登录
,南京靠谱的征婚网站?
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
如何续费美橙建站之星域名及服务?
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
教学论文网站制作软件有哪些,写论文用什么软件
?
如何彻底卸载建站之星软件?
javascript中的数组方法有哪些_如何利用数组方法简化数据处理
ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】
Laravel怎么使用artisan命令缓存配置和视图
绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信
高防服务器租用指南:配置选择与快速部署攻略
如何在宝塔面板中创建新站点?
如何在服务器上三步完成建站并提升流量?
JavaScript Ajax实现异步通信
JavaScript中的标签模板是什么_它如何扩展字符串功能
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
浅谈Javascript中的Label语句

