【Java微信公众平台开发模式+自定义按钮源码】
2013-09-06 15:21
477 查看
首先,想用开放模式需要先成为开发者。成为开发者有两种写法。
一是:通过jsp页面,用out.print("echostr")//SHA1加密的字符串;
二是:通过Servlet。doGet返回exhostr,给微信平台。
这里我只写第二种方式的请求(这里的请求是以get方式请求),代码如下:
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Arrays;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jdom.JDOMException;
/**
* 微信统一入口
* @author slz
* 2013-7-26 上午10:17:08
*/
public class WeixinServlet extends HttpServlet {
public WeixinServlet() {
super();
}
public void destroy() {
super.destroy();
}
/**
* 微信公众平台 成为开发者验证入口
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
/**
* 微信公众平台 所有接口入口
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
String TOKEN = "sun";//Token
String signature = request.getParameter("signature");//SHA1加密字符串
String timestamp = request.getParameter("timestamp");//时间
String nonce = request.getParameter("nonce");//随机数
String echoStr = request.getParameter("echostr");//随机字符串
if(StrUtil.isNotNull(echoStr)){
String[] a = {TOKEN,timestamp,nonce};
Arrays.sort(a);//数组排序
String str = "";
for(int i=0;i<a.length;i++){
str += a[i];
}
String echo = new SHA1().getDigestOfString(str.getBytes());//SHA1加密
if(echo.equals(signature)){
out.print(echoStr);
}else{
out.print("123");
}
}else{
try {
InputStream is = request.getInputStream();
PushManage push = new PushManage();
String getXml = push.PushManageXml(is);
System.out.println("getXml:"+getXml);
out.print(getXml);
} catch (JDOMException e) {
out.print("");
}
}
out.flush();
out.close();
}
}
当我们完成第一步成为开发者后,我们就可以用微信提供给我们的接口。
大家应该也看见上面有doPost方法(微信公共平台 所有接口入口)。当我们成为开发者后,微信用户向我们的公众账号发信息都是post请求。
//这里写法多种,怎么写就要看你这么获取微信请求时发给我们的XML
InputStream is = request.getInputStream();
PushManage push = new PushManage();
String getXml = push.PushManageXml(is);
一是:通过jsp页面,用out.print("echostr")//SHA1加密的字符串;
二是:通过Servlet。doGet返回exhostr,给微信平台。
这里我只写第二种方式的请求(这里的请求是以get方式请求),代码如下:
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Arrays;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jdom.JDOMException;
/**
* 微信统一入口
* @author slz
* 2013-7-26 上午10:17:08
*/
public class WeixinServlet extends HttpServlet {
public WeixinServlet() {
super();
}
public void destroy() {
super.destroy();
}
/**
* 微信公众平台 成为开发者验证入口
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
/**
* 微信公众平台 所有接口入口
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
String TOKEN = "sun";//Token
String signature = request.getParameter("signature");//SHA1加密字符串
String timestamp = request.getParameter("timestamp");//时间
String nonce = request.getParameter("nonce");//随机数
String echoStr = request.getParameter("echostr");//随机字符串
if(StrUtil.isNotNull(echoStr)){
String[] a = {TOKEN,timestamp,nonce};
Arrays.sort(a);//数组排序
String str = "";
for(int i=0;i<a.length;i++){
str += a[i];
}
String echo = new SHA1().getDigestOfString(str.getBytes());//SHA1加密
if(echo.equals(signature)){
out.print(echoStr);
}else{
out.print("123");
}
}else{
try {
InputStream is = request.getInputStream();
PushManage push = new PushManage();
String getXml = push.PushManageXml(is);
System.out.println("getXml:"+getXml);
out.print(getXml);
} catch (JDOMException e) {
out.print("");
}
}
out.flush();
out.close();
}
}
当我们完成第一步成为开发者后,我们就可以用微信提供给我们的接口。
大家应该也看见上面有doPost方法(微信公共平台 所有接口入口)。当我们成为开发者后,微信用户向我们的公众账号发信息都是post请求。
//这里写法多种,怎么写就要看你这么获取微信请求时发给我们的XML
InputStream is = request.getInputStream();
PushManage push = new PushManage();
String getXml = push.PushManageXml(is);
相关文章推荐
- Java微信公众平台开发模式+自定义按钮源码
- Java微信公众平台开发模式+自定义按钮源码
- Java微信公众平台开发模式+自定义按钮源码
- 微信公众平台开发模式 自定义菜单 指南与菜单新建错误代码分析
- 微信公众平台开发[6]-开发模式-高级功能-自定义菜单的管理
- iOS开发——UI进阶篇(四)tableView的全局刷新,局部刷新,左滑操作,左滑出现更多按钮,进入编辑模式,批量删除,自定义批量删除
- 第六篇 :微信公众平台开发实战Java版之如何自定义微信公众号菜单
- 第九篇 :微信公众平台开发实战Java版之如何实现自定义分享内容
- 第六篇 :微信公众平台开发实战Java版之如何自定义微信公众号菜单
- 使用Java语言开发微信公众平台(八)——自定义菜单功能
- Java源码分析:深入探讨Iterator模式-Java基础-Java-编程开发
- 快速开发平台ES2007在UISCRIPT数据列表插入自定义按钮及按钮事件|JAVA开发平台|web开发平台
- 第二篇 :微信公众平台开发实战Java版之开启开发者模式,接入微信公众平台开发
- Java微信公众平台开发(10) 微信自定义菜单的创建实现
- 第二篇 :微信公众平台开发实战Java版之开启开发者模式,接入微信公众平台开发
- Java微信公众平台开发(十)——微信自定义菜单的创建实现
- 微信公众平台开发教程(五)自定义菜单(含实例源码)
- Java微信公众平台开发之自定义菜单
- Java微信公众平台开发(十)——微信自定义菜单的创建实现
- Java微信公众平台开发之扫码支付模式二