• 微信公众号之获取token ^


    /// <summary>
    /// 实时获取accessToken
    /// </summary>
    /// <returns></returns>
    private static string RetrieveToken()
    {
    lock (_locker)
    {
    var resultToke = WebServiceApi.GetService(GetResultTokeUrl);
    if (string.IsNullOrEmpty(resultToke))
    {
    throw new ArgumentNullException("发送微信消息获取_Access_token失败");
    }
    var result = Newtonsoft.Json.JsonConvert.DeserializeObject<Token>(resultToke);
    if (result != null && !string.IsNullOrEmpty(result.access_token))
    {
    var _cacheManager = ServiceLocator.Instance.GetService<IStaticCacheManager>();
    _cacheManager.SetRedisString("AdminWeixinToken", Newtonsoft.Json.JsonConvert.SerializeObject(result));
    return result.access_token;
    }
    return null;
    }
    }

    public class Token
    {
    //"{\"errcode\":40164,\"errmsg\":\"invalid ip 111.22.58.107 ipv6 ::ffff:111.22.58.107, not in whitelist hint: [YEIvkA09034078]\"}"
    [DataMember]
    public string access_token { get; set; }
    [DataMember]
    public int expires_in { get; set; }
    }

    /// <summary>
    /// 获取微信Toke的URL
    /// </summary>
    protected static string GetResultTokeUrl
    {
    get
    {
    var apolloData = ApolloToConfigure.GetWChat();
    return "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + apolloData.AppId + "&secret=" + apolloData.AppSecret;
    }
    }

    /// <summary>
    /// 根据URL远程获取服务数据(同步)
    /// </summary>
    /// <param name="_Url"></param>
    /// <returns></returns>
    public static string GetService(string _Url)
    {
    if (string.IsNullOrEmpty(_Url) || _Url.IndexOf("http") < 0)
    {
    return null;
    }
    HttpWebResponse response = null;
    Stream ResStream = null;
    StreamReader streamReader = null;
    try
    {
    var request = (HttpWebRequest)WebRequest.Create(_Url);
    response = (HttpWebResponse)request.GetResponse();

    ResStream = response.GetResponseStream();
    Encoding encoding = Encoding.GetEncoding("utf-8");
    streamReader = new StreamReader(ResStream, encoding);

    return streamReader.ReadToEnd();
    }
    catch (Exception e)
    {
    throw e;
    }
    finally
    {
    if (response != null)
    {
    response.Dispose();
    response.Close();
    }
    if (ResStream != null)
    {
    ResStream.Dispose();
    ResStream.Close();
    }
    if (streamReader != null)
    {
    streamReader.Dispose();
    streamReader.Close();
    }
    }
    }

  • 相关阅读:
    ping和telnet
    nginx下No input file specified错误的解决
    【Git】删除某个全局配置项
    windows7使用Sphinx+PHP+MySQL详细介绍
    TortoiseGit需要重复填写用户名和密码的问题
    【算法】字符串数组的排序时间复杂度问题
    java随机生成6位随机数 5位随机数 4位随机数
    Linux下MySQL报Table 'xxx' doesn't exist错误解决方法,表名存在大小写区分
    Cannot find ./catalina.sh The file is absent or does not have execute permission This file is nee
    Linux 服务器安装jdk,mysql,tomcat简要教程
  • 原文地址:https://www.cnblogs.com/wang150601/p/16291390.html
Copyright © 2020-2023  润新知