//需要运行的主类
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.security.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;
}
}