我正在更新Windows Form App,它将不同的货币彼此转换(例如,英镑转换为欧元,反之亦然)。我曾经有一个想法是创建一个利用Web API框架的类,以便:
启动程序后下载最新汇率
创建分别包含这些费率的变量
将这些变量私下存储在类中,并以每种形式引用相关变量
(不幸的是,该作业需要多格式的布局-否则,我将以单一格式使用下拉菜单。)
这是迄今为止我在控制台应用程序中用于计划和测试目的的代码:
static void Main(string[] args)
{
string URL = "https://openexchangerates.org/api/latest.json?app_id=4837847d2bc64fc496cf325525c5cf0d";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);
request.ContentType = "application/json; charset=utf-8";
request.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.GetEncoding("ISO-8859-1").GetBytes("GBP"));
request.PreAuthenticate = true;
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
using (Stream responseStream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
string streamString = reader.ReadToEnd();
string[] streamArray = Regex.Split(streamString, "\n|: |,\\s*");
foreach (string s in streamArray)
{
if (s.Equals("\"GBP\""))
{
int element = Array.IndexOf(streamArray,s);
string dTPString = streamArray[element + 1];
double dollarsToPounds = Convert.ToDouble(dTPString);
}
if (s.Equals("\"EUR\""))
{
int element = Array.IndexOf(streamArray, s);
string dTEString = streamArray[element + 1];
double dollarsToEuros = Convert.ToDouble(dTEString);
}
}
}
已经测试了数组分配,并且双重变量“ dollarsToPounds”和“ dollarsToEuros”在“ using(Stream ...)”语句的上下文中均被证明具有正确的值-但是,由于“ using”的属性,这些变量尚未在其上下文之外分配值(在Main()开头声明变量不会影响此结果)。
有没有一种我可以代替使用的方法结构来执行与“使用(Stream ...)”相同的任务,即读取提供的URL的内容,然后该变量将允许在同一类中的其他位置引用变量?然后,这将允许我在课外引用它。
如果您需要我进一步解释代码,请务必询问。
相关分类