侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

.NET微信公众号查看关注者接口

微信(小程序)  /  管理员 发布于 7年前   145

本文实例为大家分享了java获取不同路径的方法,供大家参考,具体内容如下

实体类:

 public class userlist  {    public string total { get; set; }    public string count { get; set; }    public userlistopenid data { get; set; }    public string next_openid { get; set; }  }

 public class userlistopenid  {    public List<string> openid { get; set;  }

 public class userdetail  {    public int subscribe { get; set; }    public string openid { get; set; }    public string nickname { get; set; }    public int sex { get; set; }    public string language { get; set; }    public string city { get; set; }    public string province { get; set; }    public string country { get; set; }    public string headimgurl { get; set; }    public int subscribe_time { get; set; }    public string unionid { get; set; }    public string remark { get; set; }    public int groupid { get; set; }    public int[] tagid_list { get; set; }  }

getUser.aspx代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="getUser.aspx.cs" Inherits="MyTest.WebUI.Manager.usermsg.getUser" %><!DOCTYPE html><html lang="zh-CN"><head>  <meta charset="utf-8">  <meta http-equiv="X-UA-Compatible" content="IE=edge">  <meta name="viewport" content="width=device-width, initial-scale=1">  <title></title>  <!-- Bootstrap -->  <link href="https://cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet">  <!--[if lt IE 9]>   <script src="https://cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script>   <script src="https://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>  <![endif]--></head><body>  <form runat="server">    <div class="container">      <div class="row">        <div class="col-md-6 col-md-push-2">          <asp:Button class="btn btn-primary" ID="btnGet" runat="server" Text="获取所有用户openID" OnClick="btnGet_Click" />        </div>        <div class="col-md-6 col-md-pull-2">          <asp:DropDownList CssClass="form-control" ID="ddlopenids" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddlopenids_SelectedIndexChanged"></asp:DropDownList>          <asp:Label ID="lblMSG" runat="server" Text=""></asp:Label>          <asp:Image class="img-circle" ID="imgHead" runat="server" Width="180px" Height="180px" />        </div>      </div>    </div>    <script src="https://cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>    <script src="https://cdn.bootcss.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>  </form></body></html>

 public partial class getUser : System.Web.UI.Page  {    protected void Page_Load(object sender, EventArgs e)    {    }    //获取用户列表    protected void btnGet_Click(object sender, EventArgs e)    {      string next_opid = string.Empty;      string url = "https://api.weixin.qq.com/cgi-bin/user/get?access_token="+mainArg.get_Token()+"&next_openid=";      HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);      using (HttpWebResponse response = (HttpWebResponse)req.GetResponse())      {        StreamReader sr = new StreamReader(response.GetResponseStream());        string result = sr.ReadToEnd();        sr.Close();        MyTest.Common.Entity.userlist userlist = MyTest.Common.Util.JsonEntityExchange<MyTest.Common.Entity.userlist>.Json2Entity(result);        //Response.Write(userlist.count + "/"+userlist.data+"/"+userlist.next_openid+"/"+userlist.total);        ddlopenids.DataSource = userlist.data.openid;        ddlopenids.DataTextField = "";        ddlopenids.DataValueField = "";        ddlopenids.DataBind();        ListItem item = new ListItem();        item.Text = "--请选择用户的openID--";        item.Value = "--0--";        ddlopenids.Items.Insert(0, item);      }    }    //获取用户基本信息(包括UnionID机制)    protected void ddlopenids_SelectedIndexChanged(object sender, EventArgs e)    {      string url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token="+ mainArg.get_Token() + "&openid="+ddlopenids.SelectedItem.Text+"&lang=zh_CN ";      HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);      using (HttpWebResponse response = (HttpWebResponse)req.GetResponse())      {        StreamReader sr = new StreamReader(response.GetResponseStream());        string result = sr.ReadToEnd();        sr.Close();        MyTest.Common.Entity.userdetail user= MyTest.Common.Util.JsonEntityExchange<MyTest.Common.Entity.userdetail>.Json2Entity(result);        lblMSG.Text = user.subscribe + "/" + user.openid + "/" + user.nickname + "/";        imgHead.ImageUrl = user.headimgurl;      }    }  }

mainArg.cs获取accessToken帮助类:

 public class mainArg  {    //测试号    public static string appid = "wx3eb5bf1290db2ca0";    public static string secret = "e6013be0a7338c7d3e02877db116e231";    public string jsapi_ticket;    public string noncestr;    public long timestamp;    public string signature;    private static string path = HttpContext.Current.Server.MapPath(@"~/TemplePath");    private static string tokenPath = HttpContext.Current.Server.MapPath(@"~/TemplePath/token.txt");    private static string ticketPath = HttpContext.Current.Server.MapPath(@"~/TemplePath/ticket.txt");    public mainArg() {      noncestr = getNonceStr();      timestamp = getTime();    }    /// <summary>    /// 获取access_token    /// </summary>    /// <returns></returns>    public static string get_Token()    {      string token = null;      //判断是否存在或过期      if (File.Exists(tokenPath)) {        FileStream fs = new FileStream(tokenPath, FileMode.Open);        var serializer = new DataContractJsonSerializer(typeof(AccToken));        AccToken readJSToken = (AccToken)serializer.ReadObject(fs);        fs.Close();        FileInfo fi = new FileInfo(tokenPath);        if (CheckTimeOut(fi.LastWriteTime) < (readJSToken.expires_in-200)) {          return token = readJSToken.access_token;        }      }      string url = @"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&";      string urlarg = @"appid=" + appid + @"&secret=" + secret;      //      HttpUtility.UrlEncode(appid,Encoding.GetEncoding("utf-8"));      url += urlarg;      HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);      using (WebResponse response = req.GetResponse())      {        Stream s = response.GetResponseStream();        StreamReader sr = new StreamReader(s);        token = sr.ReadToEnd();        if (!Directory.Exists(path))        {          Directory.CreateDirectory(path);        }        if (File.Exists(tokenPath))        {          File.Delete(tokenPath);        }        FileStream fs = File.Create(tokenPath);        StreamWriter sw = new StreamWriter(fs);        sw.Write(token);        sw.Flush();        sw.Close();        fs.Close();        FileStream fs1 = new FileStream(tokenPath, FileMode.Open);        var serializer = new DataContractJsonSerializer(typeof(AccToken));        AccToken readJSToken = (AccToken)serializer.ReadObject(fs1);        fs1.Close();        token = readJSToken.access_token;        return token;      }    }    /// <summary>    /// 获取ticket    /// </summary>    /// <returns></returns>    public string getTicket() {      string ticket = null;      // 判断是否存在或过期      if (File.Exists(ticketPath))      {        FileStream fs = new FileStream(ticketPath, FileMode.Open);        var serializer = new DataContractJsonSerializer(typeof(JsTicket));        JsTicket readJSTicket = (JsTicket)serializer.ReadObject(fs);        fs.Close();        FileInfo fi = new FileInfo(ticketPath);        if (CheckTimeOut(fi.LastWriteTime) < (readJSTicket.expires_in - 200))        {          return ticket = readJSTicket.ticket;        }      }      string url = @"https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&";      string urlarg = @"access_token="+get_Token();      //      HttpUtility.UrlEncode(appid,Encoding.GetEncoding("utf -8"));      url += urlarg;      HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);      using (WebResponse response = req.GetResponse())      {        Stream s = response.GetResponseStream();        StreamReader sr = new StreamReader(s);        ticket = sr.ReadToEnd();        if (!Directory.Exists(path))        {          Directory.CreateDirectory(path);        }        if (File.Exists(ticketPath))        {          File.Delete(ticketPath);        }        FileStream fs = File.Create(ticketPath);        StreamWriter sw = new StreamWriter(fs);        sw.Write(ticket);        sw.Flush();        sw.Close();        fs.Close();        FileStream fs1 = new FileStream(ticketPath, FileMode.Open);        var serializer = new DataContractJsonSerializer(typeof(JsTicket));        JsTicket readJSTicket = (JsTicket)serializer.ReadObject(fs1);        fs1.Close();        ticket = readJSTicket.ticket;        return ticket;      }    }    //    public static long getTime() {      return Convert.ToInt64((DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds);    }    public static string getTimeString(DateTime dt)    {      TimeSpan ts = dt.ToUniversalTime() - new DateTime(1970, 1, 1, 0, 0, 0, 0);      return Convert.ToInt64(ts.TotalSeconds).ToString();    }    //获取16位随机字符串    public static string getNonceStr()    {      int length = 16;      string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";      string str = "";      Random rad = new Random();      for (int i = 0; i < length; i++)      {        str += chars.Substring(rad.Next(0, chars.Length - 1), 1);      }      return str;    }    //得到签名    public string getSign() {      jsapi_ticket = getTicket();      string s1 = string.Format("jsapi_ticket={0}&noncestr={1}×tamp={2}&url=http://winsee.imwork.net/Manager/Main/testjs.aspx", jsapi_ticket, noncestr, timestamp.ToString());           signature = GetSHA1(s1);      return signature;    }    public static string GetSHA1(string strSource)    {      string strResult = string.Empty;      System.Security.Cryptography.SHA1 sha = System.Security.Cryptography.SHA1.Create();      byte[] bytResult = sha.ComputeHash(System.Text.Encoding.UTF8.GetBytes(strSource));      for (int i = 0; i < bytResult.Length; i++)      {        strResult = strResult + bytResult[i].ToString("x2");      }      return strResult;    }    //SHA1哈希加密算法     public static string GetSHA1_1(string str_sha1_in)    {      SHA1 sha1 = new SHA1CryptoServiceProvider();      byte[] bytes_sha1_in = Encoding.Default.GetBytes(str_sha1_in);      byte[] bytes_sha1_out = sha1.ComputeHash(bytes_sha1_in);      string str_sha1_out = BitConverter.ToString(bytes_sha1_out);      str_sha1_out = str_sha1_out.Replace("-", "").ToLower();      return str_sha1_out;    }    // 判断是否超过7200s    public static long CheckTimeOut(DateTime changeTime)    {      return Convert.ToInt64((DateTime.Now - changeTime).TotalSeconds);    }  } # region 创建Json序列化 及反序列化类目   //创建JSon类 保存文件 ticket.txt  public class AccToken  {    public string access_token { get; set; }    public long expires_in { get; set; }  }  //创建从微信返回结果的一个类 用于获取ticket   public class JsTicket  {    public long errcode { get; set; }    public string errmsg { get; set; }    public string ticket { get; set; }    public long expires_in { get; set; }  }  #endregion 

JSon序列化,反序列化

public class JsonEntityExchange<T> where T:new()  {    /// <summary>    /// json转实体LIST    /// </summary>    /// <param name="JsonStr"></param>    /// <returns></returns>    public static List<T> Json2Entitys(string JsonStr)    {      JavaScriptSerializer Serializer = new JavaScriptSerializer();      List<T> objs = Serializer.Deserialize<List<T>>(JsonStr);      return objs;    }    /// <summary>    /// json转实体    /// </summary>    /// <param name="json"></param>    /// <returns></returns>    public static T Json2Entity(string json)    {      T obj = Activator.CreateInstance<T>();      using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))      {        DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());        return (T)serializer.ReadObject(ms);      }    }    /// <summary>    /// 实体转json    /// </summary>    /// <param name="lists">实体list</param>    /// <returns></returns>    public static string Entity2Json(List<T> lists) {      return new JavaScriptSerializer().Serialize(lists);    }  }

结果如图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


  • 上一条:
    .NET微信公众号客服接口
    下一条:
    .net微信服务号发送红包
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 微信模板消息改版后发送规则记录(微信订阅消息参数值内容限制说明)(1个评论)
    • 微信支付v3对接所需工具及命令(0个评论)
    • 2023年9月1日起:微信小程序必须备案才能上线运营(0个评论)
    • 腾讯官方客服回应了:微信好友上限约10000个!(1个评论)
    • 2023年做微信小程序的老铁注意:新增收费项、微信小程序获取手机号也收费了(2个评论)
    • 近期文章
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • Laravel 11.15版本发布 - Eloquent Builder中添加的泛型(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2017-10
    • 2018-01
    • 2020-03
    • 2021-06
    • 2021-10
    • 2022-03
    • 2023-02
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-10
    • 2023-11
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客