1

我不知道这是否是这个问题的地方,但问题是:

我有一个使用 Yahoo Weather API 从巴西各个城市获取天气数据的网络应用程序。基本上,我从这个网站获得了所有 woeid 号码:http ://woeid.rosselliot.co.nz/ 。在获得所有 woeid 号码后,我创建了一个网页,该网页进行 ajax 调用(通过 jQuery)来获取所有天气信息:

var woeid = 455997;
var url_yahoo = "http://weather.yahooapis.com/forecastrss?w=" + woeid + "&u=c";
$.ajax({
    url: 'http://ajax.googleapis.com/ajax/services/feed/load?output=xml&v=1.0&callback=?&q=' + encodeURIComponent(url_yahoo),
    dataType: 'json',
    cache: false,
    success: function(data) {
        data = $(data.responseData.xmlString).find("item");
        var condition_node = $(data).find("yweather\\:condition");
        var forecasts_node = {
            "today": $(data).find("yweather\\:forecast").eq(0),
            "tomorrow": $(data).find("yweather\\:forecast").eq(1),
            "after_tomorrow": $(data).find("yweather\\:forecast").eq(2)
        }
        var temperatures = {
            "today": {
                "now": condition_node.attr("temp"),
                "min": (forecasts_node['today']).attr("low"),
                "max": (forecasts_node['today']).attr("high")
            },
            "tomorrow": {
                "min": (forecasts_node['tomorrow']).attr("low"),
                "max": (forecasts_node['tomorrow']).attr("high")
            },
            "after_tomorrow": {
                "min": (forecasts_node['after_tomorrow']).attr("low"),
                "max": (forecasts_node['after_tomorrow']).attr("high")
            }
        }
        console.log( temperatures['today'] );
    }
})

上面的示例可以获取各个城市的所有温度。我需要做的就是更改具有相同名称的变量上的 WOEID 编号。WOEID 编号为 455997 的城市是 Sobral - CE - Brazil。基本上,这个 ajax 调用将打开 URL“weather.yahooapis.com/forecastrss?w={WOEID_NUMBER}&u=c”,从生成的 XML 文件中提取所有信息,并在浏览器的控制台上显示所有温度,如下所示:

Object {now: 38, min: 25, max: 32}

去年运行良好,所有温度都显示在“温度”数组变量中。但大约两个月前,它停止工作,在所有索引上返回“未定义”。

Object {now: undefined, min: undefined, max: undefined}

出于调试目的,我尝试了 ajax 加载的 url ( http://weather.yahooapis.com/forecastrss?w=455997&u=c )。雅虎应该向我返回与 Sobral - CE - Brazil 相关的所有预测信息,但它会返回以下 XML:

<rss xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" version="2.0">
    <channel>
        <title>Yahoo! Weather - Error</title>
        <description>Yahoo! Weather Error</description>
        <item>
            <title>City not found</title>
            <description>Weather Data not Available at the moment</description>
        </item>
    </channel>
</rss>

因此,我的 web 应用程序无法获取与我的城市相关的任何天气信息。同样的问题也发生在巴西的其他城市,例如:

Sobral, Ceara, Brazil - WOEID 455997
Tianguá, Ceara, Brazil - WOEID 453622
São Benedito, Ceará, Brazil - WOEID 449511
Ubajara, Ceara, Brazil - WOEID 454340
Viçosa, Ceara, Brazil - WOEID 461578
Guaraciaba do Norte, Ceara, Brazil - WOEID 452761

供您参考,iOS 5 的天气应用程序也发生了同样的问题。它无法显示有关上述某些城市的信息,几个月前它运行良好。

我找不到有关此问题的任何最新信息。我不知道这是否是暂时的,或者这是否意味着该服务将在未来停止。有人和我有同样的问题吗?

4

0 回答 0