这篇文章利用.net号开发微信公众号创建自定义菜单方法的相关资料,需要的朋友可以参考下
一.前言
开发之前,我们需要阅读官方的接口说明文档,不得不吐槽一下,微信的这个官方文档真的很烂,但是,为了开发我们需要的功能,我们也不得不去看这些文档.
接口文档地址:http://mp.weixin.qq.com/wiki/13/43de8269be54a0a6f64413e4dfa94f39.html
看了这些个文档,基本意思明白了,就是我们把我们要创建的菜单创建好,post到微信的服务器上面,微信服务器然后给我们一些状态码,从而判断我们的菜单是否创建成功,只是在发送json数据以前我们要做一些身份验证。
二.准备工作
首先把我们要创建的菜单写在一个txt文本中:
public string  access_token { get; set; }
        protected void page_load(object sender, eventargs e)
        {
            filestream fs1 = new filestream(server.mappath(".") + "\\menu.txt", filemode.open);
            streamreader sr = new streamreader(fs1, encoding.getencoding("utf-8"));
            string menu = sr.readtoend();
            sr.close();
            fs1.close();
            var str = getpage("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wxd811f5114e3e56f3&secret=76eb33f66129692da16d148cb3c024f1", "");
            jobject jo = jobject.parse(str);
            access_token = jo["access_token"].tostring();
            getpage("https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" + access_token + "", menu);
        }
三.开始编码
  首先我们创建一个一般处理程序createmenu.ashx.
代码如下:
        public string  access_token { get; set; }
        protected void page_load(object sender, eventargs e)
        {
            filestream fs1 = new filestream(server.mappath(".") + "\\menu.txt", filemode.open);
            streamreader sr = new streamreader(fs1, encoding.getencoding("utf-8"));
            string menu = sr.readtoend();
            sr.close();
            fs1.close();
            var str = getpage("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wxd811f5114e3e56f3&secret=76eb33f66129692da16d148cb3c024f1", "");
            jobject jo = jobject.parse(str);
            access_token = jo["access_token"].tostring();
            getpage("https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" + access_token + "", menu);
        }
这里需要注意的是appid,secret这些参数需要换成我们自己的,这些参数我们可以放在配置文件中。也可以单独的放在一个帮助类里面。
     同时在创建菜单的时候我们需要带上我的access_token这个令牌来验证我们的身份,那么我们首先要做的就是获取我们的这个令牌,那个这个令牌要如何获取了,我们可以通过一个接口获取,只需要传递我们的appid和secret这个两个参数
代码如下:
{"access_token":"jvlat9rp9dngxi4pb4rwlsx_9hjlxicmk_uwdlrtaug8wcawhzz10eqzcyrzrewcijf1-vbhs9yex00dj7qljcytiwoxtruod25opkf-0","expires_in":7200}
上面的getpage方法的返回值。这样我们就可以获取我们的令牌了。
      最后一步:带上我们的令牌,post我们的json菜单数据就可以创建菜单了。
      当你看到如下代码:
{"errcode":0,"errmsg":"ok"}
说明你的菜单创建成功了。
四:getpage
    代码如下:
public string getpage(string posturl, 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(posturl) 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;
    response.write(content);
    return content;
  }
  catch (exception ex)
  {
    string err = ex.message;
    return string.empty;
  }
}
以上所述就是本文的全部内容了,希望大家能够喜欢
以上就是利用.net号开发微信公众号创建自定义菜单方法的详细内容。
   
 
   