我非常感谢您对我之前的问题的帮助,我想知道如何使用Web服务从URI读取数据(让我们假设它是相同的数据)。 这是网址链接: http://www.google.com/ig/api?weather=paris 我尝试使用此代码,但它不起作用:
public MainPage()
{
InitializeComponent();
WebClient wc = new WebClient();
wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(download_string_complete);
wc.DownloadStringAsync(new Uri("http://www.google.com/ig/api?weather=hammamet", UriKind.Absolute));
}
public void download_string_complete(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error == null)
{
ListBoxItem areaItem = null;
StringReader stream = new StringReader(e.Result);
XmlReader reader = XmlReader.Create(stream);
string day = String.Empty;
string low = String.Empty;
string high = String.Empty;
string condition = String.Empty;
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element)
{
if (reader.Name=="forecast_conditions")
{
WeatherElement welement = new WeatherElement();
switch (reader.Name)
{
case ("day_of_week"):
{
day = reader.ReadElementContentAsString();
areaItem = new ListBoxItem();
areaItem.Content = day;
friendsBox.Items.Add(day);
} break;
case ("low"):
{
low = reader.ReadElementContentAsString();
areaItem = new ListBoxItem();
areaItem.Content = low;
friendsBox.Items.Add(low);
} break;
case ("high"):
{
high = reader.ReadElementContentAsString();
areaItem = new ListBoxItem();
areaItem.Content = high;
friendsBox.Items.Add(high);
} break;
case ("condition"):
{
condition = reader.ReadElementContentAsString();
areaItem = new ListBoxItem();
areaItem.Content = condition;
friendsBox.Items.Add(condition);
} break;
}
}
}
}
}
}
答案 0 :(得分:0)
void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error == null)
{
StringReader stream = new StringReader(e.Result);
XmlReader reader = XmlReader.Create(stream);
string Day = String.Empty;
string Low = String.Empty;
string High = String.Empty;
string ImageUri = String.Empty;
string Condition = String.Empty;
reader.MoveToContent();
while (reader.Read())
{
switch (reader.Name)
{
case ("day_of_week"):
{
listBox1.Items.Add(new ListBoxItem()
{
Content = reader.GetAttribute("data")
});
Day = Content.ToString();
} break;
case ("low"):
{
listBox1.Items.Add(new ListBoxItem()
{
Content = reader.GetAttribute("data")
});
Low = Content.ToString();
} break;
case ("high"):
{
listBox1.Items.Add(new ListBoxItem()
{
Content = reader.GetAttribute("data")
});
High = Content.ToString();
} break;
case ("icon"):
{
listBox1.Items.Add(new ListBoxItem()
{
Content = reader.GetAttribute("data")
});
Image wkpinImage = new Image();
wkpinImage.Source = new System.Windows.Media.Imaging.BitmapImage(new Uri("http://www.google.com" + Content, UriKind.Absolute));
wkpinImage.Opacity = 0.8;
wkpinImage.Stretch = System.Windows.Media.Stretch.None;
} break;
case ("condition"):
{
listBox1.Items.Add(new ListBoxItem()
{
Content = reader.GetAttribute("data")
});
Condition = Content.ToString();
} break;
case("weather"):
break;
}
}
reader.Close();
}
}