利用。net怎么在公众号中实现一个自定义查询菜单

  介绍

本篇文章为大家展示了利用。净怎么在公众号中实现一个自定义查询菜单,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

首先创建好我的查询页面,在这里我们使用aspx页面selectMenu.aspx

,代码如下:,,,,保护无效employee(对象发送方,EventArgs e)
,,,,,,,{
,,,,,,,,,,,var str=GetPage (“https://api.weixin.qq.com/cgi-bin/token& # 63; grant_type=client_credential& appid=wxd811f56f3&秘密=76 eb33f661296");
,,,,,,,,,,,JObject乔=JObject.Parse (str);
,,,,,,,,,,,乔access_token=[“access_token"] .ToString ();
,,,,,,,,,,,GetPage (“https://api.weixin.qq.com/cgi-bin/menu/get& # 63; access_token=?+ access_token +““);
,,,,,,,,,,,//GetPage (“https://api.weixin.qq.com/cgi-bin/menu/delete& # 63; access_token=access_token");
,,,,,,,}


看代码是不是相当的简单。相信这对于聪明的你根本不是什么问题。同样删除我们的自定义菜单也很简单,只不过是接口地址换了而已,GetPage方法的代码前面的文章已经有了,在这里就不重复的说明了。

令牌优化。

,前面我们已经知道了,怎么获取我们的access_token,我们知道它的有效时间是7200年代,在这里难道我们每次请求都需要去重新获取一次,岂不是很麻烦,而且也不利于性能的优化,在这里我们对这个获取令牌的方法做一些优化,更有利于我们的代码。

在这里我们首先创建一个AccessToken类来存储我们的一些信息。代码如下

///& lt; summary>///微信许可令牌///& lt;/summary>
  公开课AccessToken
  {///& lt; summary>///保存已获取到的许可令牌,键为公众号,值为公众号最后一次获取到的令牌///& lt;/summary>
  私有静态ConcurrentDictionary<字符串,Tuple比;accessTokens=new ConcurrentDictionary<字符串,Tuple在();///& lt; summary>///获取访问令牌的地址///& lt;/summary>
  私人常量字符串urlForGettingAccessToken=癶ttps://api.weixin.qq.com/cgi-bin/token& # 63; grant_type=client_credential& appid={0},秘密={1}“;///& lt; summary>///获取访问令牌的http方法///& lt;/summary>
  私人常量字符串httpMethodForGettingAccessToken=WebRequestMethods.Http.Get;///& lt; summary>///保存访问令牌的最长时间(单位:秒),超过时间之后,需要重新获?//& lt;/summary>
  私人const int accessTokenSavingSeconds=7000;///& lt; summary>///访问令牌///& lt;/summary>
  公共字符串access_token{得到;设置;}///& lt; summary>///有效时间,单位:秒///& lt;/summary>
  公共int expires_in{得到;设置;}///& lt; summary>///构造函数///& lt;/summary>///& lt;参数name=癬access_token"在访问token///& lt;参数name=癬expires_in"在有效时间& lt;/param>
  内部AccessToken(字符串_access_token, int _expires_in)
  {
  access_token=_access_token;
  expires_in=_expires_in;
  }///& lt; summary>///返回AccessToken字符串///& lt;/summary>///& lt; returns> & lt;/returns>
  公共覆盖字符串ToString ()
  {
  返回string.Format (“AccessToken: {0} \ r \ n有效时间:{1}秒“,access_token, expires_in);
  }///& lt; summary>///从JSON字符串解析AccessToken///& lt;/summary>///& lt;参数name=癹son"在JSON字符串& lt;/param>///& lt; returns>返回AccessToken
  内部静态AccessToken ParseFromJson (json字符串)
  {
  var=JsonConvert。DeserializeAnonymousType (json,新的{access_token=啊? expires_in=1});
  返回新AccessToken (。access_token at.expires_in);
  }///& lt; summary>///尝试从JSON字符串解析AccessToken///& lt;/summary>///& lt;参数name=癹son"在JSON字符串& lt;/param>///& lt;参数name=癿sg"在如果解析成功,返回AccessToken;否,则返回零。;/param>///& lt; returns>返回是否解析成功& lt;/returns>
  内部静态bool TryParseFromJson (string json, AccessToken令牌)
  {
  bool成功=false;
  令牌=零;
  试一试
  {
  令牌=ParseFromJson (json);
  成功=true;
  }
  抓住{}
  返回成功;
  }///& lt; summary>///得到访问令牌///& lt;/summary>///& lt;参数name=皍serName"在公众号& lt;/param>///& lt; returns>返回访问token
  公共静态AccessToken Get (string用户名)
  {
  TuplelastToken=accessTokens.ContainsKey(用户名),# 63;accessTokens【用户名】:空;
  AccessToken牌=lastToken==null, # 63;空:lastToken.Item1;
  DateTime refreshTime=lastToken==null, # 63;DateTime。MinValue: lastToken.Item2;
  女士双=(DateTime。现在- refreshTime) .TotalSeconds;
  如果(在女士;accessTokenSavingSeconds | |令牌==null)
  {//尝试从微信服务器获取2次
  ErrorMessage味精;
  AccessToken newToken=GetFromWeixinServer(用户名、味精);
  如果(newToken==null)
  newToken=GetFromWeixinServer(用户名、味精);
  如果(newToken !=null)
  {
  lastToken=new Tuple

利用。net怎么在公众号中实现一个自定义查询菜单