天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

利用YAHOO公開(kāi)API做天氣預(yù)報(bào)Web服務(wù)

系列文章導(dǎo)航:

創(chuàng)建一個(gè)示例和WebMethod特性解析

WebService特性和數(shù)組類(lèi)型解析

類(lèi)和結(jié)構(gòu)體解析

利用YAHOO公開(kāi)API做天氣預(yù)報(bào)Web服務(wù)

Webservice 的設(shè)計(jì)和模式

Remoting和Webservice的區(qū)別


學(xué)了一段時(shí)間的Web服務(wù),今天做了一個(gè)Web服務(wù),利用YAHOO的公開(kāi)天氣API做自己的Web服務(wù),主要是想練練手。現(xiàn)在把過(guò)程和心得分享給大家。

求教:這個(gè)Web服務(wù)還有個(gè)不完善的地方,Web服務(wù)的CityNameToCityNum方法,這個(gè)最重要,他是把省會(huì)和直轄市的名字轉(zhuǎn)換為編號(hào),因?yàn)閅AHOO傳的參數(shù)不是城市名字的區(qū)號(hào),全是自己的,而我又想不到更好的獲得YAHOO城市對(duì)應(yīng)的編號(hào)的方法,所以就創(chuàng)建了HASHTABLE存儲(chǔ)了中國(guó)的各個(gè)省會(huì)城市和直轄市,希望有高手提出更好的方法,能不用這樣,直接找YAHOO獲取編號(hào),提取更多的城市,而不用把所有的中國(guó)所有的城市全寫(xiě)在HASHTABLE里。


Web服務(wù)地址:http://www.h2bbs.com/Weather/Weather.asmx

 

原理:

 在Yahoo的Developer NETwork

http://developer.yahoo.com/weather/

詳細(xì)地介紹了Yahoo天氣預(yù)報(bào)的API調(diào)用方法,這里用C#來(lái)實(shí)現(xiàn),本文主要是利用它的API做Web服務(wù),其它的應(yīng)用由網(wǎng)友們自由發(fā)揮

首先了解Yahoo Weather Api的RSS Response格式(這是下午我查我家銀川天氣時(shí)返回的RSS):

 

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<rss version="2.0" xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
  
<channel>
    
<title>Yahoo! Weather - Yinchuan, CH</title>
    
<link>http://us.rd.yahoo.com/dailynews/rss/weather/Yinchuan__CH/*[url]http://weather.yahoo.com/forecast/CHXX0259_f.html[/url]</link>
    <description>Yahoo! Weather for Yinchuan, CH</description>
    
<language>en-us</language>
    
<lastBuildDate>Tue, 14 Oct 2008 11:00 am CST</lastBuildDate>
    
<ttl>60</ttl>
    
<yweather:location city="Yinchuan" region=""  country="CH"/>
    
<yweather:units temperature="F" distance="mi" pressure="in" speed="mph"/>
    
<yweather:wind chill="56"  direction="360"  speed="4" />
    
<yweather:atmosphere humidity="56"  visibility="999"  pressure=""  rising="0" />
    
<yweather:astronomy sunrise="7:03 am"  sunset="6:19 pm"/>
    
<image>
      
<title>Yahoo! Weather</title>
      
<width>142</width>
      
<height>18</height>
      
<link>http://weather.yahoo.com</link>
      <url>http://l.yimg.com/us.yimg.com/i/us/nws/th/main_142b.gif</url>
    </image>
    
<item>
      
<title>Conditions for Yinchuan, CH at 11:00 am CST</title>
      
<geo:lat>38.48</geo:lat>
      
<geo:long>106.22</geo:long>
      
<link>http://us.rd.yahoo.com/dailynews/rss/weather/Yinchuan__CH/*[url]http://weather.yahoo.com/forecast/CHXX0259_f.html[/url]</link>
      <pubDate>Tue, 14 Oct 2008 11:00 am CST</pubDate>
      
<yweather:condition  text="Mostly Cloudy"  code="28"  temp="56"  date=
"
Tue, 14 Oct 2008 11:00 am CST" />
      
<description>
        
<![CDATA[
<img src="
[img]http://l.yimg.com/us.yimg.com/i/us/we/52/28.gif[/img]"/><br />
<b>Current Conditions:</b><br />
Mostly Cloudy, 
56 F<BR />
<BR /><b>Forecast:</b><BR />
Tue 
- Mostly Cloudy. High: 68 Low: 47<br />
Wed 
- Partly Cloudy. High: 70 Low: 44<br />
<br />
<a href="Full'>http://us.rd.yahoo.com/dailynews/rss/weather/Yinchuan__CH/*http://weather.yahoo.com/forecast/CHXX0259_f.html">Full Forecast at Yahoo! Weather</a><BR/>
(provided by The Weather Channel)
<br/>
]]
>
      
</description>
      
<yweather:forecast day="Tue" date="14 Oct 2008" low="47" high="68" text
=
"Mostly Cloudy" code="28" />
      
<yweather:forecast day="Wed" date="15 Oct 2008" low="44" high="70" text
=
"Partly Cloudy" code="30" />
      
<guid isPermaLink="false">CHXX0259_2008_10_14_11_00_CST</guid>
    
</item>
  
</channel>
</rss>
<!-- api5.weather.sp1.yahoo.com compressed/chunked Mon Oct 13 22:30:39 PDT
2008
 -->

系列文章導(dǎo)航:

創(chuàng)建一個(gè)示例和WebMethod特性解析

WebService特性和數(shù)組類(lèi)型解析

類(lèi)和結(jié)構(gòu)體解析

利用YAHOO公開(kāi)API做天氣預(yù)報(bào)Web服務(wù)

Webservice 的設(shè)計(jì)和模式

Remoting和Webservice的區(qū)別


 

 

其中最重要的是后面的幾行,查詢當(dāng)天和第二天的天氣情況,我們要獲取的天氣信息就在里面,代碼如下:

 

     <yweather:forecast day="Tue" date="14 Oct 2008" low="47" high="68" text
=
"Mostly Cloudy" code="28" />
      
<yweather:forecast day="Wed" date="15 Oct 2008" low="44" high="70" text
=
"Partly Cloudy" code="30" />

系列文章導(dǎo)航:

創(chuàng)建一個(gè)示例和WebMethod特性解析

WebService特性和數(shù)組類(lèi)型解析

類(lèi)和結(jié)構(gòu)體解析

利用YAHOO公開(kāi)API做天氣預(yù)報(bào)Web服務(wù)

Webservice 的設(shè)計(jì)和模式

Remoting和Webservice的區(qū)別


 

Web服務(wù)的代碼中有一個(gè)Web公開(kāi)方法,四個(gè)私有方法:

(1)GetWeather方法是公共方法,提供Web調(diào)用。

(2)FToC方法,他主要是把RSS返回的華氏溫度轉(zhuǎn)換成攝氏溫度,其實(shí)這一步可以不用的,當(dāng)初沒(méi)發(fā)現(xiàn),URL中加點(diǎn)參數(shù)就返回的是攝氏溫度。

(3)EweekToCweek方法,他主要是把英文的星期縮寫(xiě)變成中文。

(4)EmonthToCmonth方法,它主要是把英文的月份縮寫(xiě)變成中文,并重新排序。

(5)CityNameToCityNum方法,這個(gè)最重要,他是把省會(huì)和直轄市的名字轉(zhuǎn)換為編號(hào),因?yàn)閅AHOO傳的參數(shù)不是城市名字的區(qū)號(hào),全是自己的,而我又想不到更好的獲得YAHOO城市對(duì)應(yīng)的編號(hào)的方法,所以就只能支持這么幾個(gè)城市了,希望有高手提出更好的方法,能不用這樣,直接找YAHOO獲取編號(hào)。

 

系列文章導(dǎo)航:

創(chuàng)建一個(gè)示例和WebMethod特性解析

WebService特性和數(shù)組類(lèi)型解析

類(lèi)和結(jié)構(gòu)體解析

利用YAHOO公開(kāi)API做天氣預(yù)報(bào)Web服務(wù)

Webservice 的設(shè)計(jì)和模式

Remoting和Webservice的區(qū)別


 

查詢個(gè)中國(guó)隨便的省會(huì),效果如下

 <?xml version="1.0" encoding="utf-8" ?> 

- <DataSet xmlns="http://www.h2bbs.com/WebService/Weather.asmx">


- <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">


- <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:
UseCurrentLocale
="true">


- <xs:complexType>


- <xs:choice minOccurs="0" maxOccurs="unbounded">


- <xs:element name="Weather">


- <xs:complexType>


- <xs:sequence>


  
<xs:element name="Date" type="xs:string" minOccurs="0" /> 

  
<xs:element name="Week" type="xs:string" minOccurs="0" /> 

  
<xs:element name="Weather" type="xs:string" minOccurs="0" /> 

  
<xs:element name="Tlow" type="xs:string" minOccurs="0" /> 

  
<xs:element name="Thigh" type="xs:string" minOccurs="0" /> 
  
</xs:sequence>
  
</xs:complexType>
  
</xs:element>
  
</xs:choice>
  
</xs:complexType>
  
</xs:element>
  
</xs:schema>

- <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">


- <NewDataSet xmlns="">


- <Weather diffgr:id="Weather1" msdata:rowOrder="0" diffgr:hasChanges="inserted">


  
<Date>2008年10月14日</Date> 

  
<Week>星期二(Tue)</Week> 

  
<Weather>Clear</Weather> 

  
<Tlow>16.1</Tlow> 

  
<Thigh>26.7</Thigh> 
  
</Weather>

- <Weather diffgr:id="Weather2" msdata:rowOrder="1" diffgr:hasChanges=
"inserted">


  
<Date>2008年10月15日</Date> 

  
<Week>星期三(Wed)</Week> 

  
<Weather>Sunny</Weather> 

  
<Tlow>16.7</Tlow> 

  
<Thigh>28.3</Thigh> 
  
</Weather>
  
</NewDataSet>
  
</diffgr:diffgram>
  
</DataSet>

NET技術(shù)利用YAHOO公開(kāi)API做天氣預(yù)報(bào)Web服務(wù),轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 诱咪视频免费 | 欧美激情视频二区 | 午夜福利电影网站鲁片大全 | 亚欧成人毛片一区二区三区四区 | 一本二卡三卡四卡乱码麻豆 | 日本黄色网站在线观看 | 寂寞夜晚视频高清观看免费 | 亚洲三级黄色 | 妈妈的职业3完整版在线播放 | 日日夜夜天天操 | 美女裸露胸部100%无遮挡 | 老师你狠狂| 日韩中文无线码在线视频 | 久久99精国产一区二区三区四区 | 在线观看国产人视频免费中国 | 99re6在线视频国产精品欧美 | 午夜国产高清精品一区免费 | 在线观看亚洲AV无码每日更新 | 最近中文字幕完整版免费 | 99精彩免费观看 | 嗯啊插的好深啊使劲抽视频 | 扒开女人下面使劲桶动态图 | H揉捏娇喘乳叫床NP调教视频 | 0855午夜福利伦理电影 | 草莓西瓜樱桃香蕉直播视频 | 微拍秒拍99福利精品小视频 | 久久久无码精品亚洲A片软件 | 娇妻让壮男弄的流白浆 | 国产亚洲欧美日韩综合综合二区 | 菠萝菠萝蜜视频在线看1 | 黄桃AV无码免费一区二区三区 | 最新 国产 精品 精品 视频 | 亚洲AV无码国产精品色午夜情 | 99久久就热视频精品草 | 99久久精品6在线播放 | 奶头被客人吸得又红又肿 | 欧美xxxxxbb| 亚洲精品天堂自在久久77 | 国产人妻午夜无码AV天堂 | 一本色道久久综合亚洲AV蜜桃 | 青草国产超碰人人添人人碱 |