>위챗 애플릿 >위챗 개발 >JAVA WeChat 개발 초보자를 위한 필수 읽기 액세스 가이드 소개

JAVA WeChat 개발 초보자를 위한 필수 읽기 액세스 가이드 소개

高洛峰
高洛峰원래의
2017-03-26 13:54:121806검색

저도 위챗 개발 초보의 여러 가지 문제로 괴로움을 겪은 후 검색 엔진에 가서 여러 기사를 찾아 읽어보았으나 기본적으로 흩어져 있었습니다. 통합된 정보 없이 WeChat 애플리케이션 개발 방법을 체계적으로 설명합니다. 저자는 자신의 실제 개발 경험을 결합해 위챗 개발 초보나 공부 중인 개발자들에게 요약하고 공유한다.

이 글에서는 주로 WeChat 개발 플랫폼을 구축하는 방법을 설명합니다. 고대인들은 "칼을 가는 것은 노력할 가치가 있다"고 말했습니다. 또한, 애플리케이션을 개발할 때 필요한 몇 가지 조건을 준비해야 합니다.

준비

1. Jdk1.7 설치 다운로드

2. Tomcat 7.0 다운로드

3 .Myeclipse 6.5 다운로드

4. Json-lib 타사 jar를 다운로드합니다.

1. 공용 IP 주소를 신청하고 자체 애플리케이션을 게시합니다.

예: 192.168.1.102

2. 아래와 같이 myeclipse를 열어

프로젝트를 만듭니다.

JAVA WeChat 개발 초보자를 위한 필수 읽기 액세스 가이드 소개

3. WeChat 애플리케이션 액세스 서블릿 클래스 생성

JAVA WeChat 개발 초보자를 위한 필수 읽기 액세스 가이드 소개

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 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("<xml>");
	    	revert.append("<tousername></tousername>");
	    	revert.append("<fromusername></fromusername>");
	    	revert.append("<createtime>"+jsonObject.get("CreateTime")+"</createtime>");
	    	revert.append("<msgtype></msgtype>");
	    	revert.append("<content></content>");
	    	revert.append("<funcflag>0</funcflag>");
	    	revert.append("</xml>");
	    	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:port를 방문하세요. No./context/wenxin

JAVA WeChat 개발 초보자를 위한 필수 읽기 액세스 가이드 소개

5 .개발자 신청

http://mp.weixin.qq을 방문하세요. .com 에서 개발자 모드를 켜세요. URL을 입력하고 찍으면 아래와 같이 신청이 성공합니다:

JAVA WeChat 개발 초보자를 위한 필수 읽기 액세스 가이드 소개



위 내용은 JAVA WeChat 개발 초보자를 위한 필수 읽기 액세스 가이드 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.