重庆小潘seo博客

当前位置:首页 > 重庆网络营销 > 小潘杂谈 >

小潘杂谈

微信公众号查看关注者接口的.NET实例教程

时间:2020-09-17 13:40:08 作者:重庆seo小潘 来源:
实体类: 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 Liststring openid { get; se

实体类: 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="//cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"><!--[if lt IE 9]><script alt="微信公众号查看关注者接口的.NET实例教程" src="//cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script><script alt="微信公众号查看关注者接口的.NET实例教程" src="//cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script><![endif]--></head><body><form runat="server"><p>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}&timestamp={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;}// 判断是否超过7200spublic static long CheckTimeOut(DateTime changeTime){return Convert.ToInt64((DateTime.Now - changeTime).TotalSeconds);}} # region 创建Json序列化 及反序列化类目//创建JSon类 保存文件 ticket.txtpublic class AccToken{public string access_token { get; set; }public long expires_in { get; set; }}//创建从微信返回结果的一个类 用于获取ticketpublic class JsTicket{public long errcode { get; set; }public string errmsg { get; set; }public string ticket { get; set; }public long expires_in { get; set; }}#endregionJSon序列化,反序列化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实例教程的详细内容,更多请关注小潘博客其它相关文章!