作者:江西理工大学-交通091班-李吉平 | 来源:互联网 | 2022-09-27 21:18
相信很多人对微信开发已经不那么陌生,我也是从一个微信开发的菜鸟经过各种问题的折磨,然后去搜索引擎搜索各种文章阅读,但是基本都是零散的资料,没有一个统一、系统的阐述微信应用如何开发。作者结合自己的实际开发经验,归纳整理出来分享给微信开发的入门者或正在研究的开发者。
相信很多人对微信开发已经不那么陌生,我也是从一个微信开发的菜鸟经过各种问题的折磨,然后去搜索引擎搜索各种文章阅读,但是基本都是零散的资料,没有一个统一、系统的阐述微信应用如何开发。作者结合自己的实际开发经验,归纳整理出来分享给微信开发的入门者或正在研究的开发者。
这篇文章主要阐述如何搭建一个微信开发平台。古人云:“磨刀不负砍才工”。我们开发应用也需要准备一些必要的条件。
准备工作
1. 下载 Jdk1.7 安装
2. 下载 Tomcat 7.0
3. 下载 Myeclipse 6.5
4. 下载 Json-lib第三方jar .
1. 申请一个公网IP地址,发布自己的应用。
例如: 192.168.1.102
2. 打开myeclipse 创建一个工程
如下图所示:
JAVA实现类 :WeixinServlet
package com.wx.servlet;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONObject;
import net.sf.json.xml.XMLSerializer;
/**
* @author haibing.xiao
* @since jdk1.6
* @version 1.0
*/
public class WeixinServlet extends HttpServlet{
private Logger log =Logger.getLogger(this.getClass().getName());
private static final long serialVersiOnUID= 1L;
private String Token;
private String echostr;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
connect(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
message(request,response);
}
/**
*@author haibing.xiao
*@return
*@exception
*@param
*
* 接入连接生效验证
*/
private void connect(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
log.info("RemoteAddr: "+ request.getRemoteAddr());
log.info("QueryString: "+ request.getQueryString());
if(!accessing(request, response)){
log.info("服务器接入失败.......");
return ;
}
String echostr=getEchostr();
if(echostr!=null && !"".equals(echostr)){
log.info("服务器接入生效..........");
response.getWriter().print(echostr);//完成相互认证
}
}
/**
* @author haibing.xiao
* Date 2013-05-29
* @return boolean
* @exception ServletException, IOException
* @param
*
*用来接收微信公众平台的验证
*/
private boolean accessing(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
String signature = request.getParameter("signature");
String timestamp = request.getParameter("timestamp");
String nOnce= request.getParameter("nonce");
String echostr = request.getParameter("echostr");
if( isEmpty(signature)){
return false;
}
if(isEmpty(timestamp)){
return false;
}
if(isEmpty(nonce)){
return false;
}
if(isEmpty(echostr)){
return false;
}
String[] ArrTmp = { Token, timestamp, nonce };
Arrays.sort(ArrTmp);
StringBuffer sb = new StringBuffer();
for (int i = 0; i XML组装组件
*/
private void message(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
InputStream is = request.getInputStream();
// 取HTTP请求流长度
int size = request.getContentLength();
// 用于缓存每次读取的数据
byte[] buffer = new byte[size];
// 用于存放结果的数组
byte[] xmldataByte = new byte[size];
int count = 0;
int rbyte = 0;
// 循环读取
while (count 业务转发组件
*
*/
private void manageMessage(String requestStr,HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
String responseStr;
try {
XMLSerializer xmlSerializer=new XMLSerializer();
JSONObject jsOnObject=(JSONObject) xmlSerializer.read(requestStr);
String event =jsonObject.getString("Event");
String msgtype =jsonObject.getString("MsgType");
if("CLICK".equals(event) && "event".equals(msgtype)){ //菜单click事件
String eventkey =jsonObject.getString("EventKey");
if("hytd_001".equals(eventkey)){ // hytd_001 这是好友团队按钮的标志值
jsonObject.put("Content", "欢迎使用好友团队菜单click按钮.");
}
}
respOnseStr=creatRevertText(jsonObject);//创建XML
log.info("responseStr:"+responseStr);
OutputStream os =response.getOutputStream();
os.write(responseStr.getBytes("UTF-8"));
} catch (Exception e) {
e.printStackTrace();
}
}
private String creatRevertText(JSONObject jsonObject){
StringBuffer revert =new StringBuffer();
revert.append("");
revert.append("");
revert.append("");
revert.append(""+jsonObject.get("CreateTime")+"");
revert.append("");
revert.append("");
revert.append("0");
revert.append("");
return revert.toString();
}
@Override
public void init() throws ServletException {
Token="test123";
}
private boolean isEmpty(String str){
return null ==str || "".equals(str) ? true :false;
}
private String trim(String str){
return null !=str ? str.trim() : str;
}
}
4. 本地部署应用 访问http://localhost:端口号/上下文/wenxin
以上就是JAVA微信开发新手必看的接入指南介绍的详细内容,更多请关注其它相关文章!