这篇文章主要阐述如何搭建一个微信开发平台。古人云:“磨刀不负砍才工”。我们开发应用也需要准备一些必要的条件。
准备工作
1. 下载 jdk1.7 安装
2. 下载 tomcat 7.0
3. 下载 myeclipse 6.5
4. 下载 json-lib第三方jar .
1. 申请一个公网ip地址,发布自己的应用。
例如: 192.168.1.102
2. 打开myeclipse 创建一个工程
如下图所示:
3. 创建一个微信应用接入servlet类
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 * * <p>接入连接生效验证</p> */ 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 * *<p>用来接收微信公众平台的验证</p> */ 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 < arrtmp.length; i++) { sb.append(arrtmp[i]); } string pwd = encrypt(sb.tostring()); log.info(signature:+signature+timestamp:+timestamp+nonce:+nonce+pwd:+pwd+echostr:+echostr); if(trim(pwd).equals(trim(signature))){ this.echostr =echostr; return true; }else{ return false; } } private string encrypt(string strsrc) { messagedigest md = null; string strdes = null; byte[] bt = strsrc.getbytes(); try { md = messagedigest.getinstance(sha-1); md.update(bt); strdes = bytes2hex(md.digest()); //to hexstring } catch (nosuchalgorithmexception e) { system.out.println(invalid algorithm.); return null; } return strdes; } public string bytes2hex(byte[] bts) { string des = ; string tmp = null; for (int i = 0; i < bts.length; i++) { tmp = (integer.tohexstring(bts[i] & 0xff)); if (tmp.length() == 1) { des += 0; } des += tmp; } return des; } public string getechostr(){ return echostr; } /** *@author haibing.xiao *@return *@exception servletexception, ioexception *@param * * <p>xml组装组件</p> */ 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 < size) { // 每次实际读取长度存于rbyte中 rbyte = is.read(buffer); for(int i=0;i
5 .申请成为开发者
访问 http://mp.weixin.qq.com ,开启开发者模式。填入url和taken,申请成功,如下所示:
以上就是java微信开发新手必看的接入指南介绍的详细内容。