• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >微信公众号 > 利用java开发微信公众号案例代码

利用java开发微信公众号案例代码

作者:匿名 字体:[增加 减小] 来源:互联网

匿名通过本文主要向大家介绍了java,微信公众号等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
这篇文章利用java开发微信公众号案例代码,如何接入公众号,订阅号怎么样接收消息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

微信公众号开发一般是针对企业和组织的,个人一般只能申请订阅号,并且调用的接口有限,下面我们就来简单的描述下接入公众号的步骤:

1、首先你需要一个邮箱在微信公众号平台进行注册;
注册的方式有订阅号、公众号、小程序和企业号,个人我们这里只能选择订阅号

2、注册完后,我们登录到公众号平台--->开发--->基本配置,这里需要填写URL和token,URL就是我们使用服务器的接口;

3、Java Web服务器程序编译好且在服务器上部署可以运行的话,可在微信公众号进行在线接口调试:

1)、选择合适的接口
2)、系统会生成该接口的参数表,您可以直接在文本框内填入对应的参数值(红色星号表示该字段必填)
3)、点击检查问题按钮,即可得到相应的调试信息

eg:获取access_token的步骤:

1)、接口类型:基础支持
2)、接口列表:获取access_token接口/token
3)、填写相应的参数:grant_type、appid、secret
4)、点击检查问题
5)、验证成功会返回结果和提示,结果为:200 ok,提示:Request successful即表示验证成功

我们这里验证比较多的是消息接口调试:文本消息、图片消息、语音消息、视频消息、etc

4、接口有不理解的地方,可进入开发-->开发者工具-->开发者文档进行查询

5、接口权限:订阅号主要有基础支持、接收消息及网页服务里面的一些接口

下面我们主要讲订阅号怎么样接收消息的案例:

1、需要申请一个个人微信订阅号
2、url服务器和服务器端代码部署(可以用腾讯云or阿里云服务器)

1)、AccountsServlet.java类,验证来自微信服务器和微信服务器的消息处理


package cn.jon.wechat.servlet; 
 
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 cn.jon.wechat.service.AccountsService; 
import cn.jon.wechat.utils.SignUtil; 
 
public class AccountsServlet extends HttpServlet { 
 
 public AccountsServlet() { 
 super(); 
 } 
 
 
 public void destroy() { 
 super.destroy(); 
 // Put your code here 
 } 
 /** 
 * 确认请求来自于微信服务器 
 */ 
 
 public void doGet(HttpServletRequest request, HttpServletResponse response) 
  throws ServletException, IOException { 
  System.out.println("接口测试开始!!!"); 
  //微信加密签名 
  String signature = request.getParameter("signature"); 
  //时间戳 
  String timestamp = request.getParameter("timestamp"); 
  //随机数 
  String nonce = request.getParameter("nonce"); 
  //随机字符串 
  String echostr = request.getParameter("echostr"); 
  
  PrintWriter out = response.getWriter(); 
  //通过校验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败 
  if(SignUtil.checkSignature(signature,timestamp,nonce)){ 
  out.print(echostr); 
  } 
  out.close(); 
  out = null; 
//  response.encodeRedirectURL("success.jsp"); 
  
  
 } 
 /** 
 * 处理微信服务器发来的消息 
 */ 
 public void doPost(HttpServletRequest request, HttpServletResponse response) 
  throws ServletException, IOException { 
 //消息的接受、处理、响应 
 request.setCharacterEncoding("utf-8"); 
 response.setCharacterEncoding("utf-8"); 
 //调用核心业务类型接受消息、处理消息 
 String respMessage = AccountsService.processRequest(request); 
  
 //响应消息 
 PrintWriter out = response.getWriter(); 
 out.print(respMessage); 
 out.close(); 
  
  
 } 
 
 public void init() throws ServletException { 
 // Put your code here 
 } 
 
}

2)、SignUtil.java类,请求校验工具类,token需要和微信中填写的token一致


package cn.jon.wechat.utils; 
 
import java.security.MessageDigest; 
import java.security.NoSuchAlgorithmException; 
import java.util.Arrays; 
import java.util.Iterator; 
import java.util.Map; 
import java.util.Set; 
import java.util.concurrent.ConcurrentHashMap; 
 
/** 
 * 请求校验工具类 
 * @author jon 
 */ 
public class SignUtil { 
 //与微信配置中的的Token一致 
 private static String token = ""; 
 
 public static boolean checkSignature(String signature, String timestamp, 
  String nonce) { 
 String[] arra = new String[]{token,timestamp,nonce}; 
 //将signature,timestamp,nonce组成数组进行字典排序 
 Arrays.sort(arra); 
 StringBuilder sb = new StringBuilder(); 
 for(int i=0;i<arra.length;i++){ 
  sb.append(arra[i]); 
 } 
 MessageDigest md = null; 
 String stnStr = null; 
 try { 
  md = MessageDigest.getInstance("SHA-1"); 
  byte[] digest = md.digest(sb.toString().getBytes()); 
  stnStr = byteToStr(digest); 
 } catch (NoSuchAlgorithmException e) { 
  // TODO Auto-generated catch block 
  e.printStackTrace(); 
 } 
 //释放内存 
 sb = null; 
 //将sha1加密后的字符串与signature对比,标识该请求来源于微信 
 return stnStr!=null?stnStr.equals(signature.toUpperCase()):false; 
 } 
 /** 
 * 将字节数组转换成十六进制字符串 
 * @param digestArra 
 * @return 
 */ 
 private static String byteToStr(byte[] digestArra) { 
 // TODO Auto-generated method stub 
 String digestStr = ""; 
 for(int i=0;i<digestArra.length;i++){ 
  digestStr += byteToHexStr(digestArra[i]); 
 } 
 return digestStr; 
 } 
 /** 
 * 将字节转换成为十六进制字符串 
 */ 
 private static String byteToHexStr(byte dByte) { 
 // TODO Auto-generated method stub 
 char[] Digit = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; 
 char[] tmpArr = new char[2]; 
 tmpArr[0] = Digit[(dByte>>>4)&0X0F]; 
 tmpArr[1] = Digit[dByte&0X0F]; 
 String s = new String(tmpArr); 
 return s; 
 } 
 
 public static void main(String[] args) { 
 /*byte dByte = 'A'; 
 System.out.println(byteToHexStr(dByte));*/ 
 Map<String,String> map = new ConcurrentHashMap<String, String>(); 
 map.put("4", "zhangsan"); 
 map.put("100", "lisi"); 
 Set set = map.keySet(); 
 Iterator iter = set.iterator(); 
 while(iter.hasNext()){ 
//  String keyV = (String) iter.next(); 
  String key =(String)iter.next(); 
  System.out.println(map.get(key)); 
//  System.out.println(map.get(iter.next())); 
 } 
 /*for(int i=0;i<map.size();i++){ 
  
 }*/ 
 } 
}

3)、AccountsService.java服务类,主要是消息的请求和响应处理,并且当用户关注你的公众号的时候,可以设置默认推送消息


package cn.jon.wechat.service; 
 
import java.util.Date; 
import java.util.Map; 
 
import javax.servlet.http.HttpServletRequest; 
 
import cn.jon.wechat.message.req.ImageMessage; 
import cn.jon.wechat.message.req.LinkMessage; 
import cn.jon.wechat.message.req.LocationMessage; 
import cn.jon.wechat.message.req.VideoMessage; 
import cn.jon.wechat.message.req.VoiceMessage; 
import cn.jon.wechat.message.resp.TextMessage; 
import cn.jon.wechat.utils.MessageUtil; 
 
/** 
 * 解耦,使控制层与业务逻辑层分离开来,主要处理请求,响应 
 * @author jon 
 */ 
public class AccountsService { 
 
 public static String processRequest(HttpServletRequest request) { 
 String respMessage = null; 
 //默认返回的文本消息内容 
 String respContent = "请求处理异常,请稍后尝试!"; 
 try { 
  //xml请求解析 
  Map<String,String> requestMap = MessageUtil.pareXml(request); 
  
  //发送方账号(open_id) 
  String fromUserName = requestMap.get("FromUserName"); 
  //公众账号 
  String toUserName = requestMap.get("ToUserName"); 
  //消息类型 
  String msgType = requestMap.get("MsgType"); 
  
  //默认回复此文本消息 
  TextM



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 微信支付验证或签名失败是什么原因?附三种解决方案
  • 微信公众号开发,实现倒计时的一个功能(纯代码)
  • 还是代码好用,几步就能判断用户是否已关注公众号
  • Java微信开发之自定义菜单的创建
  • 微信二次开发之各类型消息封装
  • 微信二次开发之文本消息请求与发送
  • 二次开发微信之请求验证
  • 微信分类接收消息以及创建实体的java代码实例
  • 接收微信服务器post消息体的java代码示例
  • 教你如何用JS和JAVA 判断是否是微信浏览器

相关文章

  • .Net开发微信公众平台之自定义菜单代码详解
  • 关于程序发布的10篇文章推荐
  • 使用java实现微信公众平台自定义菜单的创建示例代码
  • 微信公众平台开发微信公众平台通用开发框架
  • 分享微信公众号开发模板消息的实例教程
  • asp.net微信开发用户分组管理的示例代码
  • 详解iOS微信支付开发案例代码
  • 详解微信公众号开发客服接口实例(附代码)
  • PHP微信开发之查询微信的示例代码
  • 微信公众号开发系列教程一(调试环境部署)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 微信开放平台开发——网页微信扫码登录(OAuth2.0)
    • 微信公众平台开发:通用接口说明
    • Force.com微信开发系列后台配置
    • 微信开发—带参数二维码的使用
    • 微信开发之报警排查
    • 微信QQ的二维码登录原理js代码解析
    • 微信开发之WXML、WXSS 和JS的详细介绍
    • PHP微信开发之文本自动回复介绍
    • 什么是微信认证?微信认证使用方法总结
    • asp.net微信开发已关注用户管理步骤详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有