zoukankan      html  css  js  c++  java
  • C#微信公众号——自定义菜单

    自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替。
    自定义菜单的介绍,可以看官方开发文档http://mp.weixin.qq.com/wiki/home/index.html
    下面是我自己写的一个实现自定义菜单的小Dome
    一、先定义了一个Json字符串,格式要按照微信提供的Json格式
            //创建微信菜单JSON字符串
            private string GetWXMenuStr()
            {
                string weixin1 = "";
                weixin1 += "{
    ";
                weixin1 += ""button":[
    ";
                weixin1 += "{
    ";
                // weixin1 += ""type":"click",
    ";
                //第一个菜单
                weixin1 += ""name":"公共信息",
    ";
                weixin1 += ""sub_button":[
    ";
    
    
                weixin1 += "{
    ";
                weixin1 += ""type":"click",
    ";
                weixin1 += ""name":"通知公告",
    ";
                weixin1 += ""key":"11"
    ";
                weixin1 += "},
    ";
    
                weixin1 += "{
    ";
                weixin1 += ""type":"click",
    ";
                weixin1 += ""name":"工作动态",
    ";
                weixin1 += ""key":"12"
    ";
                weixin1 += "},
    ";
    
                weixin1 += "{
    ";
                weixin1 += ""type":"click",
    ";
                weixin1 += ""name":"政策法规",
    ";
                weixin1 += ""key":"13"
    ";
                weixin1 += "},
    ";
    
                weixin1 += "{
    ";
                weixin1 += ""type":"click",
    ";
                weixin1 += ""name":"经济视野",
    ";
                weixin1 += ""key":"14"
    ";
                weixin1 += "},
    ";
    
                weixin1 += "{
    ";
                weixin1 += ""type":"click",
    ";
                weixin1 += ""name":"专题报道",
    ";
                weixin1 += ""key":"15"
    ";
                weixin1 += "}]
    ";
                weixin1 += "},
    ";
                //第二个菜单
                weixin1 += "{
    ";
                //weixin1 += ""type":"click",
    ";
                weixin1 += ""name":"公共服务",
    ";
                weixin1 += ""sub_button":[
    ";
                weixin1 += "{
    ";
                weixin1 += ""type":"click",
    ";
                weixin1 += ""name":"企业之窗",
    ";
                weixin1 += ""key":"21"
    ";
                weixin1 += "},
    ";
    
                weixin1 += "{
    ";
                weixin1 += ""type":"click",
    ";
                weixin1 += ""name":"金融服务",
    ";
                weixin1 += ""key":"22"
    ";
                weixin1 += "},
    ";
    
                weixin1 += "{
    ";
                weixin1 += ""type":"click",
    ";
                weixin1 += ""name":"创业指导",
    ";
                weixin1 += ""key":"23"
    ";
                weixin1 += "},
    ";
    
                weixin1 += "{
    ";
                weixin1 += ""type":"click",
    ";
                weixin1 += ""name":"管理服务",
    ";
                weixin1 += ""key":"24"
    ";
                weixin1 += "},
    ";
    
                weixin1 += "{
    ";
                weixin1 += ""type":"click",
    ";
                weixin1 += ""name":"法律服务",
    ";
                weixin1 += ""key":"25"
    ";
                weixin1 += "}]
    ";
                weixin1 += "},
    ";
                //第三个菜单(view类型的)
                weixin1 += "{
    ";
                weixin1 += ""name":"互动交流",
    ";
                weixin1 += ""sub_button":[
    ";
                weixin1 += "{
    ";
                weixin1 += ""type":"view",
    ";
                weixin1 += ""name":"注册",
    ";
                weixin1 += ""url":"http://1532618rl0.iok.la/Register.aspx"
    ";
                weixin1 += "},
    ";
    
    
    
                weixin1 += "{
    ";
                weixin1 += ""type":"view",
    ";
                weixin1 += ""name":"登录",
    ";
                weixin1 += ""url":"http://1532618rl0.iok.la"
    ";
                weixin1 += "}]
    ";
                weixin1 += "}
    ";
                weixin1 += "}]
    ";
    
                weixin1 += "}
    ";
                return weixin1;
            }

    二、定义执行菜单请求方法

            /// <summary>
            /// 执行菜单请求
            /// </summary>
            /// <param name="url">微信提供的自定义菜单接口地址</param>
            /// <param name="postData">实现自定义菜单的Json字符串</param>
            public void PostMenuData(string url, string postData)
            {
                Stream outstream = null;
                Stream instream = null;
                StreamReader sr = null;
                HttpWebResponse response = null;
                HttpWebRequest request = null;
                Encoding encoding = Encoding.UTF8;
                byte[] data = encoding.GetBytes(postData);
                // 准备请求...
                try
                {
                    // 设置参数
                    request = WebRequest.Create(url) as HttpWebRequest;
                    CookieContainer cookieContainer = new CookieContainer();
                    request.CookieContainer = cookieContainer;
                    request.AllowAutoRedirect = true;
                    request.Method = "POST";
                    request.ContentType = "application/x-www-form-urlencoded";
                    request.ContentLength = data.Length;
                    outstream = request.GetRequestStream();
                    outstream.Write(data, 0, data.Length);
                    outstream.Close();
                    //发送请求并获取相应回应数据
                    response = request.GetResponse() as HttpWebResponse;
                    //直到request.GetResponse()程序才开始向目标网页发送Post请求
                    instream = response.GetResponseStream();
                    sr = new StreamReader(instream, encoding);
                    //返回结果网页(html)代码
                    string content = sr.ReadToEnd();
                    string err = string.Empty;
                }
                catch (Exception ex)
                {
                    string err = ex.Message;
                }
            }

    三、实现自定义菜单

           private string postUrl = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=";
            //创建自定义菜单
            public void CreateWxMenu()
            {
                string weixin1 = GetWXMenuStr();//获取菜单Json字符串
                string AccessToken = Helper.IsExistAccess_Token();//获取AccessToken
                PostMenuData(postUrl + AccessToken, weixin1);//通过接口实现自定义菜单
            }

    四、在程序运行的起始页调用CreateWxMenu()方法即可。

    其中获取AccessToken的方法是调用前面写的文章封装的一个Helper方法实现的,地址http://www.cnblogs.com/zhangjd/p/5694737.html

  • 相关阅读:
    SD卡的控制方法(指令集和控制时序)
    MDK的优化应用(转)
    SD卡的SPI模式的初始化顺序(转)
    SD卡读写扇区注意事项(转)
    MDK下调试时提示AXF文件无法导入的解决方法(转)
    把一个 int 数字 n 格式化成16进制的字符串(前面补零成0位)
    DB9 公头母头引脚定义及连接、封装
    RS232 DB9 公头 母头 串口引脚定义
    Codeforces 91C Ski Base 加边求欧拉回路数量
    Cocos Code IDE + Lua初次使用FastTiledMap的坑
  • 原文地址:https://www.cnblogs.com/zhangjd/p/5697869.html
Copyright © 2011-2022 走看看