现在的位置: 首页 > 综合 > 正文

自定义天气WCF服务接口

2013年01月15日 ⁄ 综合 ⁄ 共 6422字 ⁄ 字号 评论关闭

一、概要:

此天气WCF使用的是中国天气的Json天气数据接口。

另外,由于文章并没有讲解具体的WCF创建过程,所以在文章最后笔者会提供一个笔者自己的完成品以供大家参考。

地址:http://m.weather.com.cn/data/101120201.html

其中101120201就是每个城市的代码。 

Json数据的基本结构

View Code

 1 {
 2     "weatherinfo":
 3     {
 4         //基本信息
 5         "city":"青岛",
 6         "city_en":"qingdao",
 7         "date_y":"2013年4月2日",
 8         "date":"","week":"星期二",
 9         "fchh":"08",
10         "cityid":"101120201",
11         //未来1到6天的天气信息
12         "temp1":"12℃~4℃","temp2":"13℃~6℃","temp3":"12℃~7℃","temp4":"9℃~3℃","temp5":"7℃~-1℃","temp6":"7℃~2℃",
13         "tempF1":"53.6℉~39.2℉","tempF2":"55.4℉~42.8℉","tempF3":"53.6℉~44.6℉","tempF4":"48.2℉~37.4℉","tempF5":"44.6℉~30.2℉","tempF6":"44.6℉~35.6℉",
14         "weather1":"","weather2":"晴转多云","weather3":"多云转阴","weather4":"小雨","weather5":"多云","weather6":"",
15         //图片一天两个:白天和今晚,单数白天,双数夜晚
16         "img1":"0","img2":"99","img3":"0","img4":"1","img5":"1","img6":"2",
17         "img7":"7","img8":"99","img9":"1","img10":"99","img11":"0","img12":"99","img_single":"0",
18         "img_title1":"","img_title2":"","img_title3":"","img_title4":"多云","img_title5":"多云","img_title6":"",
19         "img_title7":"小雨","img_title8":"小雨","img_title9":"多云","img_title10":"多云","img_title11":"","img_title12":"","img_title_single":"",
20         "wind1":"北风4-5级转南风3-4级","wind2":"南风3-4级","wind3":"东南风3-4级","wind4":"东南风4-5级","wind5":"北风5-6级","wind6":"南风4-5级","fx1":"北风","fx2":"南风",
21         "fl1":"4-5级转3-4级","fl2":"3-4级","fl3":"3-4级","fl4":"4-5级","fl5":"5-6级","fl6":"4-5级",
22         //穿衣指数
23         "index":"较冷",
24         "index_d":"建议着厚外套加毛衣等服装。年老体弱者宜着大衣、呢外套加羊毛衫。",
25         "index48":"较冷",
26         "index48_d":"建议着厚外套加毛衣等服装。年老体弱者宜着大衣、呢外套加羊毛衫。",
27         //紫外线指数
28         "index_uv":"中等",
29         "index48_uv":"中等",
30         //洗车指数
31         "index_xc":"较适宜",
32         //旅游指数
33         "index_tr":"适宜",
34         //舒适指数
35         "index_co":"较舒适",
36         //这个我也不清楚,应该是和舒适指数相关的信息
37         "st1":"11","st2":"3","st3":"12","st4":"4","st5":"12","st6":"4",
38         //晨练指数
39         "index_cl":"较适宜",
40         //晾晒指数
41         "index_ls":"基本适宜",
42         //过敏指数
43         "index_ag":"极易发"
44     }
45 }

使用此接口的优点是比较稳定,信息也比较准确。缺点是比较容易找到的城市代号目前只有省级市的,像一些县级市只能根据情况自己添加了。(最后笔者会提供一个Json结构的城市列表) 

实现此天气的WCF服务,主要可分为四个功能:

1、根据IP获取用户的所有省份和城市。(如果需要自动识别用户地理位置返回天气情况的话)

2、获取城市列表解析并查找出城市的代号。

3、根据城市代号获取天气信息,解析天气信息获取结果

4、获取此服务所有支持的城市。(此功能作为附加,更方便使用者)  

二、数据结构

1、城市基本天气信息 

View Code

  1     /// <summary>
  2     /// 城市基本天气信息
  3     /// </summary>
  4     public class WeatherInformation
  5     {
  6         string city = string.Empty;
  7         [DataMember]
  8         /// <summary>
  9         /// 中文城市名称
 10         /// </summary>
 11         public string City
 12         {
 13             get { return city; }
 14             set { city = value; }
 15         }
 16 
 17         string cityEn = string.Empty;
 18         [DataMember]
 19         /// <summary>
 20         /// 英文城市名称
 21         /// </summary>
 22         public string CityEn
 23         {
 24             get { return cityEn; }
 25             set { cityEn = value; }
 26         }
 27 
 28         string date = string.Empty;
 29         [DataMember]
 30         /// <summary>
 31         /// 中文日期
 32         /// </summary>
 33         public string Date
 34         {
 35             get { return date; }
 36             set { date = value; }
 37         }
 38 
 39         string dateEn = string.Empty;
 40         [DataMember]
 41         /// <summary>
 42         /// 英文日期
 43         /// </summary>
 44         public string DateEn
 45         {
 46             get { return dateEn; }
 47             set { dateEn = value; }
 48         }
 49 
 50         string week = string.Empty;
 51         [DataMember]
 52         /// <summary>
 53         /// 中文星期
 54         /// </summary>
 55         public string Week
 56         {
 57             get { return week; }
 58             set { week = value; }
 59         }
 60 
 61         string weekEn = string.Empty;
 62         [DataMember]
 63         /// <summary>
 64         /// 英文星期
 65         /// </summary>
 66         public string WeekEn
 67         {
 68             get { return weekEn; }
 69             set { weekEn = value; }
 70         }
 71 
 72         string published = string.Empty;
 73         [DataMember]
 74         /// <summary>
 75         /// 发布时间
 76         /// </summary>
 77         public string Published
 78         {
 79             get { return published; }
 80             set { published = value; }
 81         }
 82 
 83         string cityCode = string.Empty;
 84         [DataMember]
 85         /// <summary>
 86         /// 城市代码
 87         /// </summary>
 88         public string CityCode
 89         {
 90             get { return cityCode; }
 91             set { cityCode = value; }
 92         }
 93 
 94         List<Weather> weatherForecast = new List<Weather>();
 95         [DataMember]
 96         /// <summary>
 97         /// 表示从今天开始连续6天的天气情况
 98         /// </summary>
 99         public List<Weather> WeatherForecast
100         {
101             get { return weatherForecast; }
102             set { weatherForecast = value; }
103         }
104 
105         string dressingIndex24 = string.Empty;
106         [DataMember]
107         /// <summary>
108         /// 24小时穿衣指数
109         /// </summary>
110         public string DressingIndex24
111         {
112             get { return dressingIndex24; }
113             set { dressingIndex24 = value; }
114         }
115 
116         string dressingIndexDescription24 = string.Empty;
117         [DataMember]
118         /// <summary>
119         /// 24小时穿衣指数描述信息
120         /// </summary>
121         public string DressingIndexDescription24
122         {
123             get { return dressingIndexDescription24; }
124             set { dressingIndexDescription24 = value; }
125         }
126 
127         string dressingIndex48 = string.Empty;
128         [DataMember]
129         /// <summary>
130         /// 48小时穿衣指数
131         /// </summary>
132         public string DressingIndex48
133         {
134             get { return dressingIndex48; }
135             set { dressingIndex48 = value; }
136         }
137 
138         string dressingIndexDescription48 = string.Empty;
139         [DataMember]
140         /// <summary>
141         /// 48小时穿衣指数描述
142         /// </summary>
143         public string DressingIndexDescription48
144         {
145             get { return dressingIndexDescription48; }
146             set { dressingIndexDescription48 = value; }
147         }
148 
149         string UVindex24 = string.Empty;
150         [DataMember]
151         /// <summary>
152         /// 24小时紫外线指数
153         /// </summary>
154         public string UVIndex24
155         {
156             get { return UVindex24; }
157             set { UVindex24 = value; }
158         }
159 
160         string UVindex48 = string.Empty;
161         [DataMember]
162         /// <summary>
163         /// 48小时紫外线指数
164         /// </summary>
165         public string UVIndex48
166         {
167             get { return UVindex48; }
168             set { UVindex48 = value; }
169         }
170 
171         string carWashIndex = string.Empty;
172         [DataMember]
173         /// <summary>
174         /// 洗车指数
175         /// </summary>
176         public string CarWashIndex
177         {
178             get { return carWashIndex; }
179             set { carWashIndex = value; }
180         }
181 
182         string turismIndex = string.Empty;
183         [DataMember]
184         /// <summary>
185         /// 旅游指数
186         /// </summary>
187         public string TurismIndex
188         {
189             get { return turismIndex; }
190             set { turismIndex = value; }
191         }
192 
193         string comfortIndex = string.Empty;
194         [DataMember]
195         /// <summary>
196         /// 舒适指数
197         /// </summary>
198         public string ComfortIndex
199         {
200             get { return comfortIndex; }
201             set { comfortIndex = value; }
202         }
203 
204         string morningExerciseIndex = string.Empty;
205         [DataMember]
206         /// <summary>
207         /// 晨练指数
208         /// </summary>
209         public string MorningExerciseIndex
210         {
211             get { return morningExerciseIndex; }
212             set { morningExerciseIndex = value; }
213         }
214 
215         string dryingIndex = string.Empty;
216         [DataMember]
217         /// <summary>
218         /// 晾晒指数
219         /// </summary>
220         public string DryingIndex
221         {
222             get { return dryingIndex; }
223             set { dryingIndex = value; }
224         }
225 
226         string allergyIndex = string.Empty;
227         [DataMember]
228         /// <summary>
229         /// 过敏指数
230         /// </summary>
231         public string AllergyIndex
232         {
233             get { return allergyIndex; }
234             set { allergyIndex = value; }
235         }
236     }

2、天气实体类

View Code

 1     /// <summary>
2 /// 天气实体类
3 /// </summary>
4 public class Weather
5 {
6 string celsius = string.Empty;
7 [DataMember]
8 /// <summary>
9 /// 摄氏温度
10 /// </summary>
11 public string Celsius
12 {
13 get { return celsius; }
14 set { celsius = value; }
15 }
16
17 string fahrenheit = string.Empty;
18 [DataMember]
19 /// <summary>
20 /// 华氏温度
21 /// </summary>
22 public string Fahrenheit
23 {
24 get { return fahrenheit; }
25 set { fahrenheit = value; }
26 }
27
28 string weatherDescription = string.Empty;
29 [DataMember]
30 /// <summary>
31 /// 天气描述
32 /// </summary>
33 public string WeatherDescription
34 {
35 get { return weatherDescription; }
36 set { weatherDescription = value; }
37

抱歉!评论已关闭.