//获取accessToken
public static AccessToken GetAccessToken()
{
string AppID = JobBase.GetConfParamValue(ParamEnum.AppID);
string AppSecret = JobBase.GetConfParamValue(ParamEnum.AppSecret);
string accessTokenUrl = string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", AppID, AppSecret);//
string accessTokenJson = RequestHelper.SendGet(accessTokenUrl);
JObject json = JObject.Parse(accessTokenJson);
AccessToken Token = new AccessToken();
Token.Access_token = json["access_token"].ToString().Replace("\"", string.Empty).Trim();
Token.Expires_in = json["expires_in"].ToString();//DateTime.Now.AddSeconds(Convert.ToInt32(json["expires_in"])).ToString();
return Token;
} public static string GetExistAccessToken()
{
// 读取XML文件中的数据
//string filePath = System.Web.HttpContext.Current.Server.MapPath("XML/Token.xml");
//string filePath = "http://。。。/QYXML/Token.xml";
string filePath = JobBase.GetConfApiValue(IplatformEnum.TokenXML);
FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
XmlDocument xml = new XmlDocument();
//xml.Load(filePath);
xml.Load(fs);
fs.Close();
string Token = xml.SelectSingleNode("xml").SelectSingleNode("AccessToken").InnerText.ToString().Trim();
DateTime AccessExpires = Convert.ToDateTime(xml.SelectSingleNode("xml").SelectSingleNode("AccessExpires").InnerText);
if (DateTime.Now >= AccessExpires)
{
FileStream fstream = new FileStream(filePath, FileMode.Create, FileAccess.Write);
AccessToken mode = GetAccessToken();
xml.SelectSingleNode("xml").SelectSingleNode("AccessToken").InnerText = mode.Access_token;
DateTime _accessExpires = DateTime.Now.AddSeconds(int.Parse(mode.Expires_in) - );//1h45min
xml.SelectSingleNode("xml").SelectSingleNode("AccessExpires").InnerText = _accessExpires.ToString();
//xml.Save(filePath);
xml.Save(fstream);//此处文件保存容易报错,xml文件每次重写全覆盖不完全
fstream.Close();
Token = mode.Access_token;
}
return Token;
} public static void UpdateXML(AccessToken mode)
{
string filePath = JobBase.GetConfApiValue(IplatformEnum.TokenXML);
StreamReader sr = new StreamReader(filePath, System.Text.Encoding.UTF8);
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(sr);
sr.Close();
sr.Dispose();
xmldoc.SelectSingleNode("xml").SelectSingleNode("AccessToken").InnerText = mode.Access_token;
DateTime _accessExpires = DateTime.Now.AddSeconds(int.Parse(mode.Expires_in) - );
xmldoc.SelectSingleNode("xml").SelectSingleNode("AccessExpires").InnerText = _accessExpires.ToString();
xmldoc.Save(filePath);
}

微信Accesstoken通过xml文件方式保存的更多相关文章

  1. 【转】以XML文件方式保存用户数据——2013-08-25 22

    正在做项目中有很多游戏数据要保存,常见的玩家数据这些比较简单的可以用CCUserDefault.它是cocos2d-x用来存取基本数据类型用的.保存为XML文件格式. 主要方法:(和java的map很 ...

  2. C#创建XML文件并保存

    随着XML的普及以及在动态WEB应用程序中大量应用,如何通过.NET创建,删除,修改XML文件变的也来也重要了.一个简单的概念是,XML文件跟大的文本文件并没有什么区别,同时它是先于.NET出现,很多 ...

  3. 使用DOM解析XML文件,、读取xml文件、保存xml、增加节点、修改节点属性、删除节点

    使用的xml文件 <?xml version="1.0" encoding="GB2312" ?> <PhoneInfo> <Br ...

  4. cocos2dx中调用TinyXml读取xml配置文件 || cocos2d-x 中跨平台tinyxml读取xml文件方式

    TiXmlDocument *doc = newTiXmlDocument; #if (CC_TARGET_PLATFORM ==CC_PLATFORM_ANDROID) //Android平台tin ...

  5. Winform中对xml文件进行保存时空白节点自动换行问题的解决

    场景 Winform中自定义xml配置文件后对节点进行读取与写入: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10053213 ...

  6. PLSQL_PLSQL读和写XML文件方式(案例)

    2012-05-01 Created By BaoXinjian

  7. js 对XML文件的保存与读取

    一.保存(在前端用js创建xml格式) function exportToXml(jsonStr){ var obj = eval('('+ jsonStr + ')'); var xmlDoc = ...

  8. 采用xml的方式保存数据

    package com.example.myxmlmake; import java.io.File; import java.io.FileOutputStream; import java.uti ...

  9. XML文件数据操作

    #region XML序列化文件和反序列化 /// <summary> /// 通用类的保存函数,可以将已经声明过可序列化的类以文件方式保存起来. /// 保存格式分为 XML明文式和 二 ...

随机推荐

  1. 《JavaScript权威指南》读书笔记(一)

    日期 2015-11-28 把之前的读书笔记在我弄丢它之前搬过来~~ 时间过去好久,回头一看理解都不一样了. 重点浏览了一下和Java的不同之处: js是一种宽松类型语言:js不区别整形数值与浮点型数 ...

  2. backbonejs中的模型篇(三)

    一:在模型中使用嵌套属性 Backbone的扩展插件 Backbone-Nested下载并添加引用 1:定义一个新的模型对象,使用Backbone.NestedModel作为其基类对象 var _mo ...

  3. JVM调优(这里主要是针对优化基于分布式Mahout的推荐引擎)

    优化推荐系统的JVM关键参数 -Xmx 设定Java允许使用的最大堆空间.例如-Xmx512m表示堆空间上限为512MB -server 现代JVM有两个重要标志:-client和-server,分别 ...

  4. guava学习--Optional可空类型

    转载:http://www.cnblogs.com/whitewolf/p/4231783.html Null sucks 回到本文主题Optional.在我日常编程中NullPointerExcep ...

  5. Jsp页面中使用fckeditor控件的两种方法 [转]

    fckeditor控件请到官方网站下载http://www.fckeditor.net,本例主要用到FCKeditor_2.6.3.zip.fckeditor-java-demo-2.4.1.zip. ...

  6. windows下mysql主从同步备份步骤

    目的:有两台MySQL数据库服务器A和B,使A为主服务器,B为从服务器,初始状态时,A和B中的数据信息相同,当A中的数据发生变化时,B也跟着发生相应的变化,使得A和B的数据信息同步,达到备份的目的. ...

  7. js事件应用

    ---恢复内容开始--- 一.自定义滚动条 var oDiv=document.getElementById('div1'); var oParent=document.getElementById( ...

  8. php中日期的加减法运算

    需求:通过对某个日期增加或减去几天,得到另外一个日期1.首先通过strtotime()获得日期的时间戳2.获得N天前得时间戳,通过”当前时间戳 - N天的秒数 = N天前得时间戳“3.对N天前得时间戳 ...

  9. Servlet、MySQL中文乱码

    1.Servlet中文乱码: 在doPost或doGet方法里,加上以下两行即可: response.setContentType("text/html;charset=UTF-8" ...

  10. [vijos P1531] 食物链

    做出的第一道NOI题目?(噗,还是看题解才会的…按某篇解题说的,这题就比我年轻四岁…T T 做的第一道IOI题目是USACO上的Packing Rectangles...这题比我还老!)对我等弱渣来说 ...