我正在构建一个网络应用程序,该应用程序使用雅虎天气API根据用户提供的邮政编码提供天气信息。
我知道为了在一定天数内获取此数据,我必须将其作为参数添加到我的请求中,如下所示:
http://weather.yahooapis.com/forecastrss?p=33035&u=c&d=3
这给出了这个结果:
<channel>
....
<yweather:location city="Homestead" region="FL" country="US"/>
<yweather:units temperature="C" distance="km" pressure="mb" speed="km/h"/>
<yweather:wind chill="19" direction="90" speed="11.27"/>
<yweather:atmosphere humidity="78" visibility="16.09" pressure="1021" rising="1"/>
<yweather:astronomy sunrise="7:12 am" sunset="7:36 pm"/>
...
<item>
...
<yweather:forecast day="Wed" date="2 Apr 2014" low="19" high="28" text="Mostly Sunny" code="34"/>
<yweather:forecast day="Thu" date="3 Apr 2014" low="21" high="29" text="Partly Cloudy" code="30"/>
<yweather:forecast day="Fri" date="4 Apr 2014" low="20" high="28" text="Partly Cloudy" code="30"/>
<guid isPermaLink="false">USFL0208_2014_04_04_7_00_EDT</guid>
</item>
</channel>
但是,我需要能够在预测中获取每天的湿度水平,而不仅仅是当前的湿度水平。我试图在这里找到解决方案,并阅读了Yahoo API文档,但它实际上很短。
我也尝试过 http://www.myweather2.com/和 http://developer.worldweatheronline.com/,但它们在湿度方面存在相同的问题 - 它仅显示当天,并从整个预测中删除。
我会继续尝试使用其他免费的天气API,但如果你能在这里提供帮助,我将不胜感激。
我花了一些时间研究比雅虎天气API更好的API,我发现了一些对我有用的东西,所以我决定分享这些信息,以防其他人有一天遇到这个。
Forecast API 的第 2 版看起来是一个很好的解决方案,因为它提供了详细信息,更具体地说是预报中每天的湿度指数,这是我最初要寻找的。此API也有许多库(语言包括PHP,Node.js,Python,Perl等)。
它适用于经度和纬度,如本例所示
https://api.forecast.io/forecast/APIKEY/LATITUDE,LONGITUDE,TIME
当然,需要注册一个API密钥。
TIME 参数是可选的,温度默认使用华氏度指标,但可以使用其他?units=ca
参数进行更改。
一个缺点是你每天只能收到1000个免费电话,这可能不适合大型应用程序。
如果你知道原始问题的更好答案,我会很高兴听到它。在此之前,我将使用此解决方案,而不详细介绍:
// The default result from a Forecast API call is in JSON,
// so decode it to an object for easier access
$fcObj = json_decode($jsonResult);
if(!empty($fcObj->daily->data[0]->humidity)) {
// get humidity value in %
$humidty = $fcObj->daily->data[0]->humidity * 100;
}