其实开发微信难度并不大,因为微信公众平台提供文档已经很详细了,难就难在要耐心看懂文档
代码创建菜单
这里说的代码创建的意思是执行一次就保存到微信官方的服务器中,像这样的还有其他的功能,比如上传素材,具体的可以看微信官网的《开发者文档》(登录——(左侧菜单)开发者工具——开发文档)。
步骤1 获取access_token(全局唯一接口调用凭据)
具体文档位置:在开发者文档——开始开发——获得access_token,其中最有用的一句是
http请求方式: GET
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
输入自己的appid与secret,然后以任何编程方式访问这个网址(测试的话可以直接用浏览器获取,java的话使用HttpURLConnection即可)就能获得access_token。但是一个access_token过一段时间会过期,具体看文档。
步骤2 创建菜单
具体文档位置:在开发者文档——自定义菜单——自定义菜单创建接口,同样是连接URL然后用POST的格式发送一段代码,微信官方服务器会根据我们发送的代码建立我们想要的菜单。
要注意数据包装
数据包装代码如下
/*
JSON格式
*/
public static JSONObject getJSON() {
// TODO Auto-generated method stub
JSONObject jo_button1 = new JSONObject();
jo_button1.put("type", "click");
jo_button1.put("name", "今日歌曲");
jo_button1.put("key", "V1001_TODAY_MUSIC");
JSONArray ja_zong = new JSONArray();
ja_zong.add(jo_button1);
JSONObject jo_zong = new JSONObject();
jo_zong.put("button", ja_zong.toString());
System.out.println(jo_zong.toString());
return jo_zong;
}
/*
字符串格式
*/
String menu = "{\"button\":[{\"type\":\"view\",\"name\":\"按钮1\",\"url\":\"http://www.baidu.com\"},{\"type\":\"view\",\"name\":\"按钮2\",\"url\":\"http://www.baidu.com\"}]}";
用java发送包装好的数据
public static void main(String[] args) {
try {
String pathUrl = "这里填写完整的微信接口URL";
// 建立连接
URL url = new URL(pathUrl);
HttpURLConnection httpConn = (HttpURLConnection) url
.openConnection();
// //设置连接属性
httpConn.setDoOutput(true);// 使用 URL 连接进行输出
httpConn.setDoInput(true);// 使用 URL 连接进行输入
httpConn.setUseCaches(false);// 忽略缓存
httpConn.setRequestMethod("POST");// 设置URL请求方法
String requestString = Test.getJSON().toString();
// 获得数据字节数据,请求数据流的编码,必须和下面服务器端处理请求流的编码一致
byte[] requestStringBytes = requestString.getBytes("UTF-8");
httpConn.setRequestProperty("Content-length", ""+ requestStringBytes.length);
httpConn.setRequestProperty("Content-Type",
"application/octet-stream");
httpConn.setRequestProperty("Connection", "Keep-Alive");// 维持长连接
httpConn.setRequestProperty("Charset", "UTF-8");
// 建立输出流,并写入数据
OutputStream outputStream = httpConn.getOutputStream();
outputStream.write(requestStringBytes);
outputStream.close();
// 获得响应状态
int responseCode = httpConn.getResponseCode();
if (HttpURLConnection.HTTP_OK == responseCode) {// 连接成功
// 当正确响应时处理数据
StringBuffer sb = new StringBuffer();
String readLine;
BufferedReader responseReader;
// 处理响应流,必须与服务器响应流输出的编码一致
responseReader = new BufferedReader(new InputStreamReader(
httpConn.getInputStream(), "UTF-8"));
while ((readLine = responseReader.readLine()) != null) {
sb.append(readLine).append('\n');
}
responseReader.close();
System.out.println(sb.toString());
}
} catch (Exception e) {
// TODO: handle exception
}
}
配置自己的服务
拿Web服务举例:
需要特别注意的地方
①URL的填写的端口号必须是80或443,使用tomcat的话可以上网搜一下如何修改tomcat的端口号
②第一次配置服务的时候,需要让微信官方服务器和自己建的服务器进行交互,具体的可以看开发者文档——开始开发——接入指南
③最头疼的token,经常性的验证失败,客观原因比较多,只能多试几次。
服务器接入参考代码网址:
http://blog.csdn.net/rodjohnsondoctor/article/details/22157323