我正在尝试使用http://www.weather.com.cn
提供的API制作天气应用我的筹码中有三个元素," weatherdata"字段," city"字段和按钮。我们的想法是,桌面中保存了一个" cities.txt"文件,其中存储了城市名称及其对应的与API相同的代码。像这样:
101010100=Beijing
101010300=Chaoyang
101010400=Shuangyi
101010500=Huairou
101010600=Tongzhou
101010700=Changping
101010800=Yanqing
API是一个链接:
http://m.weather.com.cn/data/(city code.html)
例如,如果我想要Beijng的天气信息,链接将如下所示:
http://m.weather.com.cn/data/101110101.html
进入链接时,它将以JSON格式提供天气数据,如:
{"weatherinfo":{"city":"西安","city_en":"xian","date_y":"2014年3月4日","date":"","week":"星期二","fchh":"11","cityid":"101110101","temp1":"13℃~3℃"...}
我希望我的应用程序从中收集信息,只显示相应字段中的特定信息。
基本上,我想要的是当我在城市字段中键入北京并单击按钮时,应用程序会将(city code.html)部分替换为相应的城市代码形式" cities.txt"。然后是" weatherdata"字段将以我们可以阅读的格式显示API提供的信息。
到目前为止,我已将EasyJSON复制到我的StackScript中。我的按钮代码如下所示:
on mouseUp
put the text of fld "city" into tCityName
put specialFolderPath("desktop") & "/cities.txt" into tFilePath
put textDecode(tCityList,"UTF8") into tCityList
put lineOffset("=" & tCityName & cr,tCityList & cr) into tFoundLine
set the itemDelimiter to "="
put item 1 of line tFoundLine of tCityList into tCityCode
put "http://m.weather.com.cn/data/" & tCityCode & ".html" into tURL
put URL tURL into tRawJSON
put textDecode(tRawJSON,"UTF8") into fld "weatherdata"
end mouseUp
然而,它没有用,除了天气数据领域出现了这个:
<html>
<head>
</head>
<body>
<script type="text/javascript">
window.onload = function() {
window.open("/","_self");
};
</script>
<!-- START WRating v1.0 -->
<script type="text/javascript" src="http://c.wrating.com/a1.js">
</script>
<script type="text/javascript">
var vjAcc="860010-2151010100";
var wrUrl="http://c.wrating.com/";
vjTrack("");
</script>
<noscript><img src="http://c.wrating.com/a.gif?a=&c=860010-2151010100"width="1" height="1"/>
</noscript>
<!-- END WRating v1.0 -->
</body>
</html>
我真的很困惑,不知道如何修复它,有人可以请帮帮我吗?
答案 0 :(得分:0)
这看起来像是一个暂时的故障。如果我运行以下脚本
on mouseUp
put empty
put url "http://m.weather.com.cn/data/101110101.html" into myData
put the result into rslt
put rslt & cr & myData
end mouseUp
我在消息框中获取了json数据,可以使用EasyJSON进行解析。只有一次我在结果中得到HTML代码和/或错误代码。如果发生这种情况,请在几分钟后再试一次。