微信公众平台消息接口开发 自定义菜单

【导语】微信绝对不再只是一款“通信工具”,正在向它擅长且有利可图的领域渗透。8月5日,微信5.0千呼万唤始出来。

 

这个版本原定于今天下午15:00正式发布。不过由于没能控制住苹果App Store的审核节奏,iOS版在今日上午提前爆出。经过试用,微信5.0虽然不是那么完美和优雅,但依然是一个强大的版本:以前,微信是一款沟通工具。现在,微信俨然自成一体。在携着微信沃卡与联通走到一起在国内找到安全感后,微信从5.0开始探索商业化,前途一片光明,不过依然有几座大山横在路上。

 

今天9-10点多,微信IOS版就出来了,我们也是立马就开始下载进行体验。

随后又得到消息微信公众平台也开始更新了,微信将公众帐号分为了订阅号和服务号,服务号与订阅号的区别明显在于消息的推送上。

服务号一个月只能推送一条消息,能申请自定义菜单

订阅号不能申请自定义菜单

 

我立马将足下软件学院的微信公众帐号申请为服务号,为的就是微信的自定义菜单。

好了 废话不多说。马上进入主题,微信自定义菜单的开发。

先看看效果:

 

具体的代码如下:

 

http请求方式:POST
https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN
ACCESS_TOKEN获取方式
http请求方式: GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
appid 申请自定义菜单的时候给你的
appsecret 同上↑

注access_token对应于公众号是全局唯一的票据,重复获取将导致上次获取的access_token失效,有效期2个小时。

 

 String url = "你的连接";
         

            String responeJsonStr = "{\"button\":[ " +
            "{ \"name\":\"足下小V\"," +
           "\"sub_button\":[" +
            "{" +
               "\"type\":\"click\"," +
               "\"name\":\"就业学员\"," +
               "\"key\":\"sf\"}," +

            "{\"type\":\"click\"," +
               "\"name\":\"学员作品\"," +
               "\"key\":\"bd\"" +
           " }," +
           " {" +
               "\"type\":\"click\"," +
               "\"name\":\"来校路线\"," +
               "\"key\":\"4ds\"" +
          "  }]" +
     "  }," +
       "{ \"name\":\"百宝箱\"," +
           "\"sub_button\":[" +
            "{" +
               "\"type\":\"click\"," +
               "\"name\":\"足下微网\"," +
               "\"key\":\"sdfd\"}," +

            "{\"type\":\"click\"," +
              "\"name\":\"会员卡\"," +
               "\"key\":\"vdf\"" +
           " }," +
           " {" +
               "\"type\":\"click\"," +
               "\"name\":\"百宝箱\"," +
               "\"key\":\"bbb\"" +
          "  }]" +
     "  }," +
       "{ \"name\":\"快捷菜单\"," +
           "\"sub_button\":[" +
            "{" +
               "\"type\":\"click\"," +
               "\"name\":\"今日课表\"," +
               "\"key\":\"dgs\"}," +

            "{\"type\":\"click\"," +
               "\"name\":\"3G相册\"," +
               "\"key\":\"3d\"" +
           " }," +
           " {" +
               "\"type\":\"click\"," +
               "\"name\":\"留言墙\"," +
              "\"key\":\"dss\"" +
          "  }]" +
     "}]" +
" }";
//对菜单进行编码,UTF-8不会出现乱码问题
            UTF8Encoding encoding = new UTF8Encoding();
            byte[] data = encoding.GetBytes(responeJsonStr);
            HttpWebRequest myRequest =
   (HttpWebRequest)WebRequest.Create(url);
//POst 提交方式
            myRequest.Method = "POST";
            myRequest.ContentType = "application/x-www-form-urlencoded";
            myRequest.ContentLength = data.Length;
            Stream newStream = myRequest.GetRequestStream();
            newStream.Write(data, 0, data.Length);
            newStream.Close();
            HttpWebResponse response;
            Stream responseStream;
            StreamReader reader;
            string srcString;
            response = myRequest.GetResponse() as HttpWebResponse;
            responseStream = response.GetResponseStream();
            reader = new System.IO.StreamReader(responseStream, Encoding.UTF8);
//返回结果 正确的Json返回结果:{"errcode":0,"errmsg":"ok"}
// 错误的Json返回结果:{"errcode":40018,"errmsg":"invalid button name size"}
            srcString = reader.ReadToEnd();
            reader.Close();
            Console.WriteLine(srcString);
            Console.Read();

  

posted @ 2013-08-05 22:50  web王  阅读(1587)  评论(1)    收藏  举报