通过config配置文件存储常量值
来源:互联网 发布:淘宝联盟不能提现 编辑:程序博客网 时间:2024/05/01 05:56
当调用接口的时候或者某些系统用到的固定常量值,在开发项目时需要配置的值一般都写在config配置文件中,
然后通过实例化上下文Context从配置文件中读取值。
例如:项目系统需要通过http的方式调用Fbdd系统的接口,Fbdd系统提供了接口url以及访问url时的账户和密码,
如果每次调用Fbdd接口的时候,都将这些值直接赋值到json包,那么会很麻烦,主要体现在:
(1)每次调用接口,都要给这些字段赋值。
(2)当url,帐户名或密码发生变化时修改处会很多,很不方便
(3)安全性很低
解决方法:
将这些值写在config配置文件中,然后通过Context上下文获得其值
例如:
(1)创建配置文件FbddApi.config,内容如下:
<?xml version="1.0" encoding="utf-8" ?>
<apiconfig>
<orderUpload>
<url>http://xxx.net/API/orderupload</url>
<account>test001</account>
<secure>aaabbb</secure>
<setting>
<appUid>8910000176182</appUid>
<appName>冯剑秋</appName>
<appType>1</appType>
<appStatus>2</appStatus>
<orderType>E</orderType>
</setting>
</orderUpload>
<orderStatusQuery>
<url>http://xxx.net/API/orderUploadScheduleQuery</url>
<account>test001</account>
<secure>aaabbb</secure>
<setting>
<queryCount>50</queryCount>
<successStatus>120</successStatus>
<waitStatus>1000,1004,1,2,3</waitStatus>
<failStatus>4,100</failStatus>
</setting>
</orderStatusQuery>
<apiconfig>
(2)创建访问配置文件的上下文类FbddApiContext.cs
{
private string _url;
private string _account;
private string _secure;
public FbddApiContext(string apiType)
{
//读取配置文件
string xmlPath = Path.Combine(HostingEnvironment.MapPath("/content/config"), "FbddApi.config");
XDocument xDoc = XDocument.Load(xmlPath, LoadOptions.None);
XElement root = xDoc.Element("apiconfig");
if (apiType == "orderUpload")
{
XElement applyRoot = root.Element("orderUpload");
//获取根节点下的元素
XElement x1 = applyRoot.Element("url");
XElement x2 = applyRoot.Element("account");
XElement x3 = applyRoot.Element("secure");
_url = x1.Value;
_account = x2.Value;
_secure = x3.Value;
//其他参数设置,设置Setting字典
GetSetting(applyRoot.Element("setting"));
}
else if (apiType == "orderStatusQuery")
{
XElement applyRoot = root.Element("orderStatusQuery");
//获取根节点下的元素
XElement x1 = applyRoot.Element("url");
XElement x2 = applyRoot.Element("account");
XElement x3 = applyRoot.Element("secure");
_url = x1.Value;
_account = x2.Value;
_secure = x3.Value;
GetSetting(applyRoot.Element("setting"));
}
}
/// <summary>
/// 接口地址
/// </summary>
public string Url
{
get
{
return _url;
}
}
/// <summary>
/// 账号
/// </summary>
public string Account
{
get
{
return _account;
}
}
/// <summary>
/// 密码
/// </summary>
public string Secure
{
get
{
return _secure;
}
}
private Dictionary<string, string> _setting = new Dictionary<string, string>();
/// <summary>
/// 其他设置
/// </summary>
public Dictionary<string, string> Setting
{
get
{
return _setting;
}
}
/// <summary>
/// 设置Setting字典
/// </summary>
protected void GetSetting(XElement settingNode)
{
if (settingNode == null)
{
return;
}
settingNode.Elements().ToList().ForEach(i => _setting.Add(i.Name.ToString(), i.Value));
}
}
(3)调用Fbdd接口时,通过创建Context上下文实例初始化各属性的值
var context = new FbddApiContext("orderAuditQuery");//读取orderAuditQuery下的标签值
context.Setting["appUid"],//读取Setting中的标签值,字典取值的方法
然后通过实例化上下文Context从配置文件中读取值。
例如:项目系统需要通过http的方式调用Fbdd系统的接口,Fbdd系统提供了接口url以及访问url时的账户和密码,
如果每次调用Fbdd接口的时候,都将这些值直接赋值到json包,那么会很麻烦,主要体现在:
(1)每次调用接口,都要给这些字段赋值。
(2)当url,帐户名或密码发生变化时修改处会很多,很不方便
(3)安全性很低
解决方法:
将这些值写在config配置文件中,然后通过Context上下文获得其值
例如:
(1)创建配置文件FbddApi.config,内容如下:
<?xml version="1.0" encoding="utf-8" ?>
<apiconfig>
<orderUpload>
<url>http://xxx.net/API/orderupload</url>
<account>test001</account>
<secure>aaabbb</secure>
<setting>
<appUid>8910000176182</appUid>
<appName>冯剑秋</appName>
<appType>1</appType>
<appStatus>2</appStatus>
<orderType>E</orderType>
</setting>
</orderUpload>
<orderStatusQuery>
<url>http://xxx.net/API/orderUploadScheduleQuery</url>
<account>test001</account>
<secure>aaabbb</secure>
<setting>
<queryCount>50</queryCount>
<successStatus>120</successStatus>
<waitStatus>1000,1004,1,2,3</waitStatus>
<failStatus>4,100</failStatus>
</setting>
</orderStatusQuery>
<apiconfig>
(2)创建访问配置文件的上下文类FbddApiContext.cs
- 将需要从config中读取的值所对应的xml标签设置为属性。例如Url,Account,Secure,Setting
- 由于setting中的内容标签有时不一样,那么将Setting属性设置为字典,进行读取其中的值,例如:Dictionary<string, string> Setting
- 通过上下文Context的构造函数进行赋值
{
private string _url;
private string _account;
private string _secure;
public FbddApiContext(string apiType)
{
//读取配置文件
string xmlPath = Path.Combine(HostingEnvironment.MapPath("/content/config"), "FbddApi.config");
XDocument xDoc = XDocument.Load(xmlPath, LoadOptions.None);
XElement root = xDoc.Element("apiconfig");
if (apiType == "orderUpload")
{
XElement applyRoot = root.Element("orderUpload");
//获取根节点下的元素
XElement x1 = applyRoot.Element("url");
XElement x2 = applyRoot.Element("account");
XElement x3 = applyRoot.Element("secure");
_url = x1.Value;
_account = x2.Value;
_secure = x3.Value;
//其他参数设置,设置Setting字典
GetSetting(applyRoot.Element("setting"));
}
else if (apiType == "orderStatusQuery")
{
XElement applyRoot = root.Element("orderStatusQuery");
//获取根节点下的元素
XElement x1 = applyRoot.Element("url");
XElement x2 = applyRoot.Element("account");
XElement x3 = applyRoot.Element("secure");
_url = x1.Value;
_account = x2.Value;
_secure = x3.Value;
GetSetting(applyRoot.Element("setting"));
}
}
/// <summary>
/// 接口地址
/// </summary>
public string Url
{
get
{
return _url;
}
}
/// <summary>
/// 账号
/// </summary>
public string Account
{
get
{
return _account;
}
}
/// <summary>
/// 密码
/// </summary>
public string Secure
{
get
{
return _secure;
}
}
private Dictionary<string, string> _setting = new Dictionary<string, string>();
/// <summary>
/// 其他设置
/// </summary>
public Dictionary<string, string> Setting
{
get
{
return _setting;
}
}
/// <summary>
/// 设置Setting字典
/// </summary>
protected void GetSetting(XElement settingNode)
{
if (settingNode == null)
{
return;
}
settingNode.Elements().ToList().ForEach(i => _setting.Add(i.Name.ToString(), i.Value));
}
}
(3)调用Fbdd接口时,通过创建Context上下文实例初始化各属性的值
var context = new FbddApiContext("orderAuditQuery");//读取orderAuditQuery下的标签值
context.Setting["appUid"],//读取Setting中的标签值,字典取值的方法
0 0
- 通过config配置文件存储常量值
- 常量值
- “初始化”: 截断常量值
- maximo 字段常量值
- WMsg参数常量值
- 使用常量值
- 强制修改常量值
- Spring将配置文件里的常量值注入给静态变量
- Windows message 消息常量值
- Android中颜色常量值
- 字符串不变性和常量值
- constants 常量值的使用
- C# 通过窗体修改配置文件的代码 App.config
- C#连接数据库的新方法(通过web.config配置文件)
- C#连接数据库的新方法(通过web.config配置文件)
- 通过配置文件(web.config)实现邮件发送
- C#连接数据库的新方法(通过web.config配置文件)
- WCF 通过web.config配置文件解决传输内容过大问题
- 5464575
- 从10个方面来提升软件开发者的效率
- Python实现merge sort
- several ways to reduce the amount of bandwidth consumed by an app
- Android Broadcast 和 BroadcastReceiver的权限机制
- 通过config配置文件存储常量值
- 设计模式——原型模式(Prototype Pattern)
- 图片缩放设置
- JTable和TableModel
- 迪杰斯特拉算法
- zoj 1234
- Cocos2d-X 3.0 游戏软件环境搭建与项目创建
- struts set 标签用法
- android客户端多线程下载案例(实现断点续传,包括客户端服务端,还有注释)