0

几天以来,我正在尝试为我的 WP7 手机编写一个 C# 程序,以从网站获取某种数据文件。

有一个主要链接(http://www.convert-control.de/plant/53752/yield/2012)生成我的太阳能电池板在特定时间生产的产量图表视图。此处高于 2012 年。将请求更改为 ... yield/2012/4/5 将为您提供 4 月 5 日的收益率。

所以发生的事情是,在这个请求之后,服务器会生成一个名为 chartdata 的文件。

调用主链接后,我可以在浏览器中启动第二个请求,即http://www.convert-control.de//chartdata/53752并获得相关数据。这些数据用于填充图表。此图表是一个 swf 对象。

所以,我现在的问题是,如何在 c# 中为 WP7 程序编写我的请求,从而为我提供进一步使用的数据?

谢谢你的帮助,乔

4

1 回答 1

0

乔!

获取数据很简单。您的数据大小低于 8kb,对于这种小容量,最好的方法是 IMO 使用WebClient.DownloadStringAsync方法(或 DownloadStringTaskAsync,您将决定使用我推荐的 Async CTP,顺便说一句)。

在字符串中得到响应后,我建议使用 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; }
}

然后,您JsonConvert.DeserializeObject<RootObject>( response )使用从 Web 服务器获得的响应字符串进行调用,并获取一个包含所有响应数据的强类型 C# 对象。随心所欲地处理或可视化它。

AFAIK 目前无法在 Windows Phone 上重用您的 SWF 控件。您必须创建自己的 UI 来可视化您的数据。如果您需要这部分的帮助,您可能应该在此处搜索和/或发布另一个问题。

于 2013-02-15T03:00:58.537 回答