c#asp.net 微信公众号开发之--服务号自定义菜单

找了好久 看了下,  好多的坑 ,也是醉了 。。。。。。。。。。

   protected void Page_Load(object sender, EventArgs e)

    {

         string strReturn = get_accessToken();//获取access_token

         GetPage(strReturn);

     // string postUrl = "https://api.weixin.qq.com/cgi-bin/menu/get?access_token=" + strReturn;

   //SeleteGetPage(postUrl)

    }

  //获取access_token


    public static string get_accessToken()
    {
        string grant_type = "client_credential";
        string appid = "";//你的appid
        string secret = "";//你的secret
        string tokenUrl = string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type={0}&appid={1}&secret={2}", grant_type, appid, secret);
        //提供向 URI 标识的资源发送数据和从 URI 标识的资源接收数据的公共方法,
        //WebClient 类提供向 URI 标识的任何本地、Intranet 或 Internet 资源发送数据以及从这些资源接收数据的公共方法
        WebClient client = new WebClient();
        //从微信API下载access_token 并返回access_token 的值
        string strReturn = Encoding.UTF8.GetString(client.DownloadData(tokenUrl));
      //  string accesstoken = strReturn.Substring(strReturn.IndexOf("access_token\":\"") + 15, strReturn.IndexOf("\",\"expires") - (strReturn.IndexOf("access_token\":\"")+15)); 
        //反序列化JsonConvert.DeserializeObject
        GetAccess_Token getAccess_Token = JsonConvert.DeserializeObject<GetAccess_Token>(strReturn);
        return getAccess_Token.access_token;

    }

//创建菜单

    public string GetPage(string accessToken)
    {
        Stream outstream = null;
        Stream instream = null;
        StreamReader sr = null;
        HttpWebResponse response = null;
        HttpWebRequest request = null;
        Encoding encoding = Encoding.UTF8;
        string url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" + accessToken;
        string postData = "{\"button\":[{\"type\":\"click\",\"name\":\"资讯信息\",\"key\":\"P1\"},{\"type\":\"view\",\"name\":\"学习平台\",\"url\":\"http://www.baidu.com\"}]}]}";
        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;
            //WriteLog("response" + response);
            //直到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;
        }
    }

//查询菜单和删除菜单只是传过去的URL不同 ,替他都一样

  public string SeleteGetPage(string posturl)
    {
        Stream instream = null;
        StreamReader sr = null;
        HttpWebResponse response = null;
        HttpWebRequest request = null;
        Encoding encoding = Encoding.UTF8;
        // 准备请求...
        try
        {
            // 设置参数
            request = WebRequest.Create(posturl) as HttpWebRequest;
            CookieContainer cookieContainer = new CookieContainer();
            request.CookieContainer = cookieContainer;
            request.AllowAutoRedirect = true;
            request.Method = "GET";
            request.ContentType = "application/x-www-form-urlencoded";
            //发送请求并获取相应回应数据
            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;
        }

    }

  public class GetAccess_Token
    {
        //微信返回的accesstoken
        public string access_token;
        //微信返回的accesstoken的有效时间 7200
        public int expires_in;


        public string Access_token
        {
            get
            {
                return this.access_token;
            }
            set
            {
                this.access_token = value;
            }
        }
        public int Expires_in
        {
            get
            {
                return this.expires_in;
            }
            set
            {
                this.expires_in = value;
            }
        }
    }


版权声明:本文为qq_39583241原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。