JAVA实现微信自定义菜单创建以及消息回复等

                           自我总结

初次尝试微信公众号开发,遇到各种问题。废话不多说,上码:
1、创建自定义菜单
        根据微信接口文档,内容如下图:对应链接

要创建自定义菜单要获取ACCESS_TOKEN,根据微信接口文档获取ACCESS_TOKEN接口如下图:对应链接

OK,下面上代码
首先获取ACCESS_TOKEN对应代码如下:
package ;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import org.apache.http.client.ClientProtocolException;
import org.json.JSONException;
import org.json.JSONObject;

import cn.com.wkt.weixin.service.impl.WXApiServiceImpl;

/**
 * 
 * @author Administrator
 * 
 */
public class GetAccessToken {

	public static Map
     
     
      
       AccessToken = new HashMap
      
      
       
       ();

	/**
	 * 获取 AccessToken
	 * 
	 * @param publicName
	 *            公众号标识
	 * @param appId
	 * @param appSecret
	 * @throws ClientProtocolException
	 * @throws IOException
	 */
	public synchronized static void AccessToken(String publicName,
			String appId, String appSecret) throws ClientProtocolException,
			IOException, JSONException {
		WXApiServiceImpl imp = new WXApiServiceImpl();
		JSONObject json = imp.getAccessTokenJSON(appId, appSecret);
		json.put("time", System.currentTimeMillis());
		AccessToken.put(publicName, json);
	}

	/**
	 * 判断 AccessToken 是否存在或是否超时,不存在或超时重新获取
	 * 
	 * @param appId
	 * @param appSecret
	 * @param publicName
	 * @return access_token
	 * @throws ClientProtocolException
	 * @throws IOException
	 * @throws JSONException 
	 */
	public synchronized static String ifAccessToken(String appId,
			String appSecret, String publicName)
			throws ClientProtocolException, IOException, JSONException {
		String access_token = "";
		Long time = System.currentTimeMillis(); // 当前时间戳
		// 判断 AccessToken 是否存在
		if (AccessToken == null || AccessToken.get(publicName) == null) {
			AccessToken(publicName, appId, appSecret);
		}
		// 上次获取 AccessToken 的时间戳
		Long oldtime = Long.parseLong(AccessToken.get(publicName).get("time")
				.toString());
		if (time - oldtime > 7000 * 1000) { // 上次获取的时间大于7200秒,重新获取
			AccessToken(publicName, appId, appSecret);
		}
		access_token = (String) AccessToken.get(publicName).get("access_token");
		return access_token;
	}
}

      
      
     
     
package cn.com.wkt.weixin.service.impl;

import java.io.IOException;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONException;
import org.json.JSONObject;
import org.springframework.stereotype.Service;

import cn.com.wkt.weixin.service.WXApiService;

@Service("wXApiService")
public class WXApiServiceImpl implements WXApiService {

	public JSONObject getAccessTokenJSON(String appId, String appSecret)
			throws ClientProtocolException, IOException, JSONException {
		String result = "";
		HttpClient httpclient = new DefaultHttpClient();
		String smsUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="
				+ 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值