代码
1 /// <summary> 2 /// Msn天气预报 3 /// 涂聚文 2011-02-16 因为被扒手把移动硬盘扒了.重新写.几年的代码因为没有备份,全泡了.重新开始. 4 /// </summary> 5 public class MsnWeatherAPI 6 { 7 /// <summary> 8 /// Msn天气预报 9 /// </summary> 10 /// <param name="wealocations"></param> 11 /// <param name="weadegreetype"> c,f </param> 12 /// <returns></returns> 13 public static MsnConditions GetCurrentConditions( string wealocations, string weadegreetype) 14 { 15 string weatherXML = string .Empty; 16 WebClient wc = new WebClient(); 17 wc.Encoding = System.Text.Encoding.UTF8; 18 wc.Credentials = CredentialCache.DefaultCredentials; // 获取或设置用于对向Internet资源的请求进行身份验证的网络凭据。 19 MsnConditions conditions = new MsnConditions(); 20 XmlDocument xmlConditions = new XmlDocument(); 21 string url = string .Format( " http://weather.msn.com/data.aspx?wealocations=wc:{0}&weadegreetype={1} " , wealocations, weadegreetype); 22 byte [] bt = bt = wc.DownloadData(url); 23 wc.Dispose(); 24 string data1 = System.Text.Encoding.Default.GetString(bt); 25 xmlConditions.LoadXml(data1); 26 // xmlConditions.Load(url); 27 // XmlNamespaceManager ns = new XmlNamespaceManager(xmlConditions.NameTable); 28 XmlNodeList nodes = xmlConditions.DocumentElement.SelectNodes( " /weatherdata/weather " ); 29 30 // 1.可以用 31 #region 32 33 // XmlNodeList elemList = xmlConditions.GetElementsByTagName("weather"); 34 // for (int i = 0; i < elemList.Count; i++) 35 // { 36 // conditions.WeatherLocationcode = elemList[i].Attributes["weatherlocationcode"].Value; 37 // onditions.WeatherLocationname = elemList[i].Attributes["weatherlocationname"].Value; 38 // } 39 #endregion 40 41 42 // 2.可以用 43 #region 44 // System.Net.WebRequest request = System.Net.WebRequest.Create(url); // 创建对weatherURL请求 45 // request.Credentials = System.Net.CredentialCache.DefaultCredentials; // 安全设置 46 // System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)request.GetResponse(); // 得到响应 47 // if (response.StatusDescription.ToUpper() == "OK") 48 // { 49 // System.IO.Stream weatherStream = response.GetResponseStream(); 50 // System.IO.StreamReader read = new System.IO.StreamReader(weatherStream); 51 // weatherXML = read.ReadToEnd(); 52 // read.Close(); 53 // weatherStream.Close(); 54 // } 55 // else 56 // { 57 // weatherXML = string.Empty; 58 // } 59 // response.Close(); 60 // 61 // XmlReader reader = XmlReader.Create(new System.IO.StringReader(weatherXML)); 62 /// /XmlTextReader reader = new XmlTextReader(url); 63 64 // while (reader.Read()) 65 // { 66 67 // if (reader.IsStartElement()) 68 // { 69 // switch (reader.Name) 70 // { 71 // case "weather": 72 // reader.MoveToAttribute("weatherlocationname"); 73 // conditions.WeatherLocationcode = reader.Value; 74 // reader.MoveToAttribute("lat"); 75 // conditions.Latitude = reader.Value; 76 // reader.MoveToAttribute("long"); 77 // conditions.Longitude = reader.Value; 78 // break; 79 80 // } 81 82 // } 83 84 85 // } 86 #endregion 87 // 3.可以用 88 try 89 { 90 if (xmlConditions.SelectSingleNode( " /weatherdata/weather " ) == null ) 91 { 92 conditions = null ; 93 return conditions; 94 } 95 else 96 { 97 foreach (XmlNode node in nodes) 98 { 99 conditions.WeatherLocationcode = node.Attributes[ " weatherlocationcode " ].Value; 100 conditions.WeatherLocationname = node.Attributes[ " weatherlocationname " ].Value; 101 conditions.ZipCode = node.Attributes[ " zipcode " ].Value; 102 conditions.Latitude = node.Attributes[ " lat " ].Value; 103 conditions.Longitude = node.Attributes[ " long " ].Value; 104 conditions.TimeZone = node.Attributes[ " timezone " ].Value; 105 conditions.EntityId = node.Attributes[ " entityid " ].Value; 106 } 107 return conditions; 108 } 109 110 } 111 catch (Exception ex) 112 { 113 conditions = null ; 114 string err = ex.Message.ToString(); 115 return conditions; 116 } 117 118 } 119 }