您的位置:首页 > 移动开发 > 微信开发

微信二次开发——自定义菜单

2015-06-22 23:14 453 查看
//需要运行的主类

package com.my;

import java.io.BufferedReader;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.PrintWriter;

import java.net.ProtocolException;

import java.net.URL;

import javax.net.ssl.HttpsURLConnection;

import javax.net.ssl.SSLContext;

import javax.net.ssl.SSLSocketFactory;

import net.sf.json.JSONObject;

import com.my.menu.BaseButton;

import com.my.menu.Menu;

import com.my.menu.PlainButton;

import com.my.menu.TopButton;

public class Demo {
public static void main(String[] args) throws Exception {
// 创建自己受信任的证书
TrustManager[] tm = { new TrustManager() };
SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
sslContext.init(null, tm, new java.security.SecureRandom());
// 从上述SSLContext对象中得到SSLSocketFactory对象
SSLSocketFactory ssf = sslContext.getSocketFactory();
URL url = new URL(
" https://api.weixin.qq.com/cgi-bin/menu/create?access_token=自己获取"); HttpsURLConnection httpUrlConn = (HttpsURLConnection) url
.openConnection();
httpUrlConn.setSSLSocketFactory(ssf);
// 设置请求方法
// 开启请求,返送数据
httpUrlConn.setRequestMethod("POST");
httpUrlConn.setDoOutput(true);
httpUrlConn.setDoInput(true);

httpUrlConn.setUseCaches(false);

//自己定义得到菜单的类

MenT ment = new MenT();
String jsonMenu = ment.Re_Js();
// 当有数据需要提交时,以流的方式提交,注意编码设定,防止中文乱码
String requestString = jsonMenu;
byte[] requestStringBytes = requestString.getBytes("utf-8");
OutputStream outputStream = httpUrlConn.getOutputStream();
outputStream.write(requestStringBytes);
outputStream.close();
// 接收微信后台返回的内容,进行解析
StringBuffer sb = new StringBuffer();
InputStream is = httpUrlConn.getInputStream();
InputStreamReader isr = new InputStreamReader(is, "UTF-8");
BufferedReader br = new BufferedReader(isr);
String s = "";
while ((s = br.readLine()) != null) {
sb.append(s);
}
System.out.print(sb.toString());

}
}

//MenT.java

package com.my;
import net.sf.json.JSONObject;
import com.my.menu.BaseButton;
import com.my.menu.Menu;
import com.my.menu.PlainButton;
import com.my.menu.TopButton;
public class MenT {
public String Re_Js() {
PlainButton btn11 = new PlainButton();       
btn11.setName("新闻资讯");
       btn11.setType("click");         
       btn11.setKey("11");
       PlainButton btn12 = new PlainButton();  
       btn12.setName("优惠活动");  
       btn12.setType("click");  
       btn12.setKey("12");   
       PlainButton btn21 = new PlainButton();  
       btn21.setName("个人资料");  
       btn21.setType("click");  
       btn21.setKey("21");  
       PlainButton btn22 = new PlainButton();  
       btn22.setName("购买查询");  
       btn22.setType("click");  
       btn22.setKey("22");    
       PlainButton btn31 = new PlainButton();  
       btn31.setName("生活助手");  
       btn31.setType("click");  
       btn31.setKey("31");  
 
       PlainButton btn32 = new PlainButton();  
       btn32.setName("智商测试");  
       btn32.setType("click");  
       btn32.setKey("32");  
       
       TopButton topButton1 = new TopButton();
       topButton1.setName("活动资讯");  
       topButton1.setSub_button(new PlainButton[] { btn11, btn12});  
       
       TopButton topButton2 = new TopButton();
       topButton2.setName("自助查询");  
       topButton2.setSub_button(new PlainButton[] { btn21, btn22});  
       
       TopButton topButton3 = new TopButton();
       topButton3.setName("娱乐");  
       topButton3.setSub_button(new PlainButton[] { btn31, btn32}); 
       
       
       Menu menu = new Menu();  
       menu.setButton(new BaseButton[] { topButton1, topButton2,topButton3});        
       String jsonMenu = JSONObject.fromObject(menu).toString(); 
       return jsonMenu;

}

}

//TrustManager.java,编写自己的证书

package com.my;

import java.security.cert.CertificateException;

import java.securit
4000
y.cert.X509Certificate;

import javax.net.ssl.X509TrustManager;

public class TrustManager implements X509TrustManager {

/**
* 该方法检查客户端的证书,若不信任该证书则抛出异常。由于我们不需要对客户端进行认证,
* 因此我们只需要执行默认的信任管理器的这个方法。默认的信任管理器类为TrustManager。
*/

public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {

}
/**
* 该方法检查服务器的证书,若不信任该证书同样抛出异常。通过自己实现该方法,可以使之信任我们指定的任何证书。
* 在实现该方法时,也可以简单的不做任何处理,即一个空的函数体,由于不会抛出异常,它就会信任任何证书。
*/

public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}

/**
* 返回受信任的X509证书数组。
*/

public X509Certificate[] getAcceptedIssuers() {
return null;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: