A5下载 - 努力做内容最丰富最安全的下载站!

A5站长下载站

当前位置:A5下载 > 编程开发 > 网站开发 > .NET微信公众号开发之创建自定义菜单

.NET微信公众号开发之创建自定义菜单

时间:2015-07-16 13:50作者:zhao人气:279

一.前言

开发之前,我们需要阅读官方的接口说明文档,不得不吐槽一下,微信的这个官方文档真的很烂,但是,为了开发我们需要的功能,我们也不得不去看这些文档.

接口文档地址:http://mp.weixin.qq.com/wiki/13/43de8269be54a0a6f64413e4dfa94f39.html

看了这些个文档,基本意思明白了,就是我们把我们要创建的菜单创建好,post到微信的服务器上面,微信服务器然后给我们一些状态码,从而判断我们的菜单是否创建成功,只是在发送json数据以前我们要做一些身份验证。

二.准备工作

首先把我们要创建的菜单写在一个txt文本中:

{

"button":[

{

"type":"view",

"name":"付停车费",

"url":"http://www.baidu.com"

},{

"name":"个人中心",

"sub_button":[

{

"type":"view",

"name":"个人信息",

"url":"http://www.baidu.com"

},

{

"type":"view",

"name":"订单查询",

"url":"http://www.baidu.com"

},

{

"type":"view",

"name":"使用帮助",

"url":"http://www.baidu.com"

},

{

"type":"view",

"name":"下载APP",

"url":"http://www.baidu.com"

}]

}]

}

三.开始编码

首先我们创建一个一般处理程序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-vBhS9YEX00Dj7q__lJCyTIWOxTruOd25opkf-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,微信,公众,号开,发之,创建,自定义,菜单,前言

相关下载

查看所有评论+

网友评论

网友
您的评论需要经过审核才能显示

公众号