因为有几天我正在尝试为我的WP7手机编写一个C#程序来从网站上获取某种数据文件。
有一个主链接(http://www.convert-control.de/plant/53752/yield/2012),它生成我的太阳能电池板在特定时间产生的产量的图表视图。这里是2012年的上面。将请求更改为... yield / 2012/4/5将为您提供4月5日的收益率。
所以发生了什么,在这个请求之后,服务器将生成一个文件,该文件被cad图表数据。
在我调用主链接后,我能够在浏览器中启动第二个http://www.convert-control.de//chartdata/53752请求并获取相关数据。这些数据用于填充图表。此图表是一个swf对象。
所以,我现在的问题是,如何在c#中为WP7程序编写我的请求,这样可以为我提供进一步使用的数据?
感谢您的帮助, 乔
答案 0 :(得分:0)
乔!
获取数据很简单。您的数据大小不超过8kb,这种小体积的最佳方法是IMO使用WebClient.DownloadStringAsync方法(或者您可以选择DownloadStringTaskAsync来使用我推荐的异步CTP,BTW)。
在字符串中得到响应之后,我建议使用Json.NET将其解析为强类型对象。这是json2csharp.com从您的数据中自动生成的代码,只有一些修复(未经测试):
public class Title
{
public string text { get; set; }
}
public class Key
{
public string text { get; set; }
public string colour { get; set; }
[JsonProperty("font-size")]
public int font_size { get; set; }
}
public class Val
{
public string colour, tip;
public int val;
}
public class Element
{
public string type { get; set; }
public int alpha { get; set; }
public List<List<Val>> values { get; set; }
public List<Key> keys { get; set; }
}
public class Tooltip
{
public bool shadow { get; set; }
public int stroke { get; set; }
public string colour { get; set; }
public string background { get; set; }
public string title { get; set; }
public string body { get; set; }
}
public class Labels
{
public List<string> labels { get; set; }
public int steps { get; set; }
}
public class XAxis
{
public string colour { get; set; }
public Labels labels { get; set; }
[JsonProperty("grid-colour")]
public string grid_colour { get; set; }
}
public class YAxis
{
public int min { get; set; }
public int max { get; set; }
public int steps { get; set; }
[JsonProperty("grid-colour")]
public string grid_colour { get; set; }
public string colour { get; set; }
}
public class XLegend
{
public string text { get; set; }
public string style { get; set; }
}
public class YLegend
{
public string text { get; set; }
public string style { get; set; }
}
public class RootObject
{
public Title title { get; set; }
public List<Element> elements { get; set; }
public string bg_colour { get; set; }
public Tooltip tooltip { get; set; }
public int num_decimals { get; set; }
public bool is_fixed_num_decimals_forced { get; set; }
public bool is_decimal_separator_comma { get; set; }
public XAxis x_axis { get; set; }
public YAxis y_axis { get; set; }
public XLegend x_legend { get; set; }
public YLegend y_legend { get; set; }
}
然后,使用您从Web服务器获得的响应字符串调用JsonConvert.DeserializeObject<RootObject>( response )
,然后返回包含所有响应数据的强类型C#对象。根据您的喜好处理或想象它。
AFAIK目前无法在Windows Phone上重复使用SWF控件。您必须创建自己的UI以可视化您的数据。如果你需要有关该部分的帮助,你应该谷歌和/或在这里发布另一个问题。