精华内容
下载资源
问答
  • java获取天气预报

    热门讨论 2014-03-29 00:44:20
    java获取实时天气状况。介绍了两种方法:1.通过httpclient请求中央气象台API接口获取xml数据 2.分析中央气象台页面源码,通过htmlunit技术从html中抓取实时天气信息
  • java获取天气预报数据

    千次阅读 2014-08-05 16:53:21
    获取天气预报数据 对于做web项目有天气数据的需求,这个服务很合适: WebXml.com.cn2400多个城市天气预报Web服务,包含2300个以上中国城市和100个以上国外城市天气预报数据。数据每2.5小时左右自动更新一次,准确...

    获取天气预报数据

    对于做web项目有天气数据的需求,这个服务很合适:

    WebXml.com.cn 2400多个城市天气预报Web服务,包含2300个以上中国城市和100个以上国外城市天气预报数据。数据每2.5小时左右自动更新一次,准确可靠。提供webservice 接口,主连接:http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx/

    方法调用说明如下:

    (1)getRegionCountry :获得国外国家名称和与之对应的ID

    说明:输入参数:无,

    返回数据:一维字符串数组—如下:

    <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://WebXml.com.cn/">

    <string>阿尔及利亚,3320</string>

    <string>阿根廷,3522</string>

    <string>阿曼,3170</string>

    <string>阿塞拜疆,3176</string>

    <string>埃及,3317</string>

    <string>埃塞俄比亚,3314</string>

    <string>爱尔兰,3246</string>

    <string>奥地利,3237</string>

    <string>澳大利亚,368</string>

    <string>巴基斯坦,3169</string>

    <string>巴西,3580</string>

    <string>保加利亚,3232</string>

    <string>比利时,3243</string>

    <string>波兰,3235</string>

    <string>朝鲜,3163</string>

    <string>丹麦,3245</string>

    <string>德国,3238</string>

    <string>俄罗斯,3225</string>

    <string>法国,3241</string>

    <string>菲律宾,3151</string>

    <string>芬兰,3248</string>

    <string>刚果(金),3377</string>

    <string>哥伦比亚,3524</string>

    <string>古巴,344</string>

    <string>韩国,3162</string>

    <string>荷兰,3244</string>

    <string>加拿大,347</string>

    <string>加纳,3313</string>

    <string>柬埔寨,3154</string>

    <string>捷克,3236</string>

    <string>克罗地亚,3233</string>

    <string>肯尼亚,3316</string>

    <string>拉托维亚,3228</string>

    <string>老挝,3155</string>

    <string>立陶宛,3227</string>

    <string>马达加斯加,3312</string>

    <string>马尔代夫,3166</string>

    <string>马来西亚,3158</string>

    <string>马里,3319</string>

    <string>美国,346</string>

    <string>蒙古,3165</string>

    <string>秘鲁,3578</string>

    <string>缅甸,3160</string>

    <string>莫桑比克,3311</string>

    <string>墨西哥,345</string>

    <string>南非,3310</string>

    <string>尼泊尔,3164</string>

    <string>尼日利亚,3379</string>

    <string>挪威,3250</string>

    <string>葡萄牙,3239</string>

    <string>日本,3161</string>

    <string>瑞典,3249</string>

    <string>瑞士,3242</string>

    <string>塞内加尔,3318</string>

    <string>沙特阿拉伯,3172</string>

    <string>斯里兰卡,3167</string>

    <string>泰国,3159</string>

    <string>坦桑尼亚,3315</string>

    <string>突尼斯,3321</string>

    <string>土耳其,3229</string>

    <string>委内瑞拉,342</string>

    <string>文莱,3153</string>

    <string>乌克兰,3226</string>

    <string>乌兹别克斯坦,3175</string>

    <string>西班牙,3240</string>

    <string>希腊,3230</string>

    <string>新加坡,3157</string>

    <string>新西兰,369</string>

    <string>匈牙利,3234</string>

    <string>叙利亚,3174</string>

    <string>牙买加,343</string>

    <string>伊朗,3171</string>

    <string>意大利,3231</string>

    <string>印度,3168</string>

    <string>印度尼西亚,3152</string>

    <string>英国,3247</string>

    <string>约旦,3173</string>

    <string>越南,3156</string>

    <string>智利,3523</string>

    </ArrayOfString>

     

    (2)getRegionDataset 获得中国省份、直辖市、地区;国家名称(国外)和与之对应的ID

    说明:输入参数:无,

    返回数据:DataSet—如下:

    <Province diffgr:id="Province1" msdata:rowOrder="0">

    <RegionID>3113</RegionID>

    <RegionName>黑龙江</RegionName>

    </Province>

    <Province diffgr:id="Province2" msdata:rowOrder="1">

    <RegionID>3114</RegionID>

    <RegionName>吉林</RegionName>

    </Province>

    <Province diffgr:id="Province3" msdata:rowOrder="2">

    <RegionID>3115</RegionID>

    <RegionName>辽宁</RegionName>

    </Province>

    <Province diffgr:id="Province4" msdata:rowOrder="3">

    <RegionID>3116</RegionID>

    <RegionName>内蒙古</RegionName>

    </Province>

    <Province diffgr:id="Province5" msdata:rowOrder="4">

    <RegionID>3117</RegionID>

    <RegionName>河北</RegionName>

    </Province>

    <Province diffgr:id="Province6" msdata:rowOrder="5">

    <RegionID>3118</RegionID>

    <RegionName>河南</RegionName>

    </Province>

    <Province diffgr:id="Province7" msdata:rowOrder="6">

    <RegionID>3119</RegionID>

    <RegionName>山东</RegionName>

    </Province>

    <Province diffgr:id="Province8" msdata:rowOrder="7">

    <RegionID>31110</RegionID>

    <RegionName>山西</RegionName>

    </Province>

    <Province diffgr:id="Province9" msdata:rowOrder="8">

    <RegionID>31111</RegionID>

    <RegionName>江苏</RegionName>

    </Province>

    <Province diffgr:id="Province10" msdata:rowOrder="9">

    <RegionID>31112</RegionID>

    <RegionName>安徽</RegionName>

    </Province>

    <Province diffgr:id="Province11" msdata:rowOrder="10">

    <RegionID>31113</RegionID>

    <RegionName>陕西</RegionName>

    </Province>

    <Province diffgr:id="Province12" msdata:rowOrder="11">

    <RegionID>31114</RegionID>

    <RegionName>宁夏</RegionName>

    </Province>

    <Province diffgr:id="Province13" msdata:rowOrder="12">

    <RegionID>31115</RegionID>

    <RegionName>甘肃</RegionName>

    </Province>

    <Province diffgr:id="Province14" msdata:rowOrder="13">

    <RegionID>31116</RegionID>

    <RegionName>青海</RegionName>

    </Province>

    <Province diffgr:id="Province15" msdata:rowOrder="14">

    <RegionID>31117</RegionID>

    <RegionName>湖北</RegionName>

    </Province>

    <Province diffgr:id="Province16" msdata:rowOrder="15">

    <RegionID>31118</RegionID>

    <RegionName>湖南</RegionName>

    </Province>

    <Province diffgr:id="Province17" msdata:rowOrder="16">

    <RegionID>31119</RegionID>

    <RegionName>浙江</RegionName>

    </Province>

    <Province diffgr:id="Province18" msdata:rowOrder="17">

    <RegionID>31120</RegionID>

    <RegionName>江西</RegionName>

    </Province>

    <Province diffgr:id="Province19" msdata:rowOrder="18">

    <RegionID>31121</RegionID>

    <RegionName>福建</RegionName>

    </Province>

    <Province diffgr:id="Province20" msdata:rowOrder="19">

    <RegionID>31122</RegionID>

    <RegionName>贵州</RegionName>

    </Province>

    <Province diffgr:id="Province21" msdata:rowOrder="20">

    <RegionID>31123</RegionID>

    <RegionName>四川</RegionName>

    </Province>

    <Province diffgr:id="Province22" msdata:rowOrder="21">

    <RegionID>31124</RegionID>

    <RegionName>广东</RegionName>

    </Province>

    <Province diffgr:id="Province23" msdata:rowOrder="22">

    <RegionID>31125</RegionID>

    <RegionName>广西</RegionName>

    </Province>

    <Province diffgr:id="Province24" msdata:rowOrder="23">

    <RegionID>31126</RegionID>

    <RegionName>云南</RegionName>

    </Province>

    <Province diffgr:id="Province25" msdata:rowOrder="24">

    <RegionID>31127</RegionID>

    <RegionName>海南</RegionName>

    </Province>

    <Province diffgr:id="Province26" msdata:rowOrder="25">

    <RegionID>31128</RegionID>

    <RegionName>新疆</RegionName>

    </Province>

    <Province diffgr:id="Province27" msdata:rowOrder="26">

    <RegionID>31129</RegionID>

    <RegionName>西藏</RegionName>

    </Province>

    <Province diffgr:id="Province28" msdata:rowOrder="27">

    <RegionID>31130</RegionID>

    <RegionName>台湾</RegionName>

    </Province>

    <Province diffgr:id="Province29" msdata:rowOrder="28" diffgr:hasChanges="inserted">

    <RegionID>311101</RegionID>

    <RegionName>北京</RegionName>

    </Province>

    <Province diffgr:id="Province30" msdata:rowOrder="29" diffgr:hasChanges="inserted">

    <RegionID>311102</RegionID>

    <RegionName>上海</RegionName>

    </Province>

    <Province diffgr:id="Province31" msdata:rowOrder="30" diffgr:hasChanges="inserted">

    <RegionID>311103</RegionID>

    <RegionName>天津</RegionName>

    </Province>

    <Province diffgr:id="Province32" msdata:rowOrder="31" diffgr:hasChanges="inserted">

    <RegionID>311104</RegionID>

    <RegionName>重庆</RegionName>

    </Province>

    <Province diffgr:id="Province33" msdata:rowOrder="32" diffgr:hasChanges="inserted">

    <RegionID>311201</RegionID>

    <RegionName>香港</RegionName>

    </Province>

    <Province diffgr:id="Province34" msdata:rowOrder="33" diffgr:hasChanges="inserted">

    <RegionID>311202</RegionID>

    <RegionName>澳门</RegionName>

    </Province>

    <Province diffgr:id="Province35" msdata:rowOrder="34" diffgr:hasChanges="inserted">

    <RegionID>311203</RegionID>

    <RegionName>钓鱼岛</RegionName>

    </Province>

    <Country diffgr:id="Country1" msdata:rowOrder="0">

    <RegionID>3320</RegionID>

    <RegionName>阿尔及利亚</RegionName>

    </Country>

    <Country diffgr:id="Country2" msdata:rowOrder="1">

    <RegionID>3522</RegionID>

    <RegionName>阿根廷</RegionName>

    </Country>

    <Country diffgr:id="Country3" msdata:rowOrder="2">

    <RegionID>3170</RegionID>

    <RegionName>阿曼</RegionName>

    </Country>

    <Country diffgr:id="Country4" msdata:rowOrder="3">

    <RegionID>3176</RegionID>

    <RegionName>阿塞拜疆</RegionName>

    </Country>

    <Country diffgr:id="Country5" msdata:rowOrder="4">

    <RegionID>3317</RegionID>

    <RegionName>埃及</RegionName>

    </Country>

    <Country diffgr:id="Country6" msdata:rowOrder="5">

    <RegionID>3314</RegionID>

    <RegionName>埃塞俄比亚</RegionName>

    </Country>

    <Country diffgr:id="Country7" msdata:rowOrder="6">

    <RegionID>3246</RegionID>

    <RegionName>爱尔兰</RegionName>

    </Country>

    <Country diffgr:id="Country8" msdata:rowOrder="7">

    <RegionID>3237</RegionID>

    <RegionName>奥地利</RegionName>

    </Country>

    <Country diffgr:id="Country9" msdata:rowOrder="8">

    <RegionID>368</RegionID>

    <RegionName>澳大利亚</RegionName>

    </Country>

    <Country diffgr:id="Country10" msdata:rowOrder="9">

    <RegionID>3169</RegionID>

    <RegionName>巴基斯坦</RegionName>

    </Country>

    <Country diffgr:id="Country11" msdata:rowOrder="10">

    <RegionID>3580</RegionID>

    <RegionName>巴西</RegionName>

    </Country>

    <Country diffgr:id="Country12" msdata:rowOrder="11">

    <RegionID>3232</RegionID>

    <RegionName>保加利亚</RegionName>

    </Country>

    <Country diffgr:id="Country13" msdata:rowOrder="12">

    <RegionID>3243</RegionID>

    <RegionName>比利时</RegionName>

    </Country>

    <Country diffgr:id="Country14" msdata:rowOrder="13">

    <RegionID>3235</RegionID>

    <RegionName>波兰</RegionName>

    </Country>

    <Country diffgr:id="Country15" msdata:rowOrder="14">

    <RegionID>3163</RegionID>

    <RegionName>朝鲜</RegionName>

    </Country>

     

    (3)获得支持的城市/地区名称和与之对应的ID

    getSupportCityDataset 

    说明:输入参数:theRegionCode = 省市、国家ID或名称,

    返回数据:DataSet。

       getSupportCityString 

    说明:输入参数:theRegionCode = 省市、国家ID或名称,

    返回数据:一维字符串数组。

     

    例如:我想找到河北(3117)各个地区的ID:

    链接:http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx/getSupportCityString?theRegionCode=3117

    返回数据如下:

    <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://WebXml.com.cn/">

    <string>安国,832</string>

    <string>安平,837</string>

    <string>安新,833</string>

    <string>北戴河,3445</string>

    <string>霸州,798</string>

    <string>柏乡,12</string>

    <string>保定,830</string>

    <string>泊头,846</string>

    <string>沧州,844</string>

    <string>昌黎,816</string>

    <string>大名,919</string>

    <string>成安,611</string>

    <string>承德,755</string>

    <string>任县,525</string>

    <string>承德县,760</string>

    <string>赤城,744</string>

    <string>崇礼,699</string>

    <string>磁县,538</string>

    <string>大厂,791</string>

    <string>大城,841</string>

    <string>定州,451</string>

    <string>东光,878</string>

    <string>肥乡,595</string>

    <string>丰南,812</string>

    <string>丰宁,701</string>

    <string>丰润,811</string>

    <string>馆陶,924</string>

    <string>峰峰,535</string>

    <string>抚宁,817</string>

    <string>阜城,875</string>

    <string>阜平,445</string>

    <string>高碑店,789</string>

    <string>高阳,831</string>

    <string>高邑,17</string>

    <string>藁城,452</string>

    <string>沽源,698</string>

    <string>固安,793</string>

    <string>故城,872</string>

    <string>广平,540</string>

    <string>广宗,856</string>

    <string>海兴,855</string>

    <string>邯郸,533</string>

    <string>河间,842</string>

    <string>衡水,867</string>

    <string>怀安,371</string>

    <string>怀来,745</string>

    <string>黄骅,852</string>

    <string>鸡泽,860</string>

    <string>临西,916</string>

    <string>冀州,869</string>

    <string>晋洲,444</string>

    <string>井陉,448</string>

    <string>景县,876</string>

    <string>巨鹿,25</string>

    <string>康保,345</string>

    <string>宽城,762</string>

    <string>涞源,409</string>

    <string>廊坊,796</string>

    <string>乐亭,815</string>

    <string>蠡县,848</string>

    <string>临城,19</string>

    <string>临漳,483</string>

    <string>灵寿,438</string>

    <string>隆化,705</string>

    <string>隆尧,20</string>

    <string>卢龙,767</string>

    <string>栾城,16</string>

    <string>滦南,766</string>

    <string>滦平,753</string>

    <string>滦县,810</string>

    <string>满城,839</string>

    <string>孟村,861</string>

    <string>内邱,23</string>

    <string>南宫,870</string>

    <string>南和,532</string>

    <string>南皮,884</string>

    <string>宁晋,22</string>

    <string>邱县,934</string>

    <string>平泉,706</string>

    <string>平山,449</string>

    <string>平乡,857</string>

    <string>迁安,768</string>

    <string>迁西,764</string>

    <string>秦皇岛,769</string>

    <string>青龙,765</string>

    <string>青县,843</string>

    <string>清河,871</string>

    <string>曲阳,440</string>

    <string>曲周,534</string>

    <string>饶阳,834</string>

    <string>任丘,838</string>

    <string>容城,787</string>

    <string>三河,800</string>

    <string>沙河,8</string>

    <string>尚义,346</string>

    <string>涉县,528</string>

    <string>深泽,849</string>

    <string>深州,836</string>

    <string>石家庄,453</string>

    <string>顺平,408</string>

    <string>肃宁,853</string>

    <string>威县,915</string>

    <string>唐海,814</string>

    <string>唐山,813</string>

    <string>唐县,447</string>

    <string>万全,374</string>

    <string>望都,835</string>

    <string>围场,702</string>

    <string>蔚县,406</string>

    <string>魏县,537</string>

    <string>文安,840</string>

    <string>无极,454</string>

    <string>吴桥,882</string>

    <string>武安,531</string>

    <string>武强,865</string>

    <string>武邑,868</string>

    <string>献县,845</string>

    <string>香河,801</string>

    <string>辛集,866</string>

    <string>新河,858</string>

    <string>新乐,450</string>

    <string>兴隆,757</string>

    <string>行唐,443</string>

    <string>邢台,24</string>

    <string>雄县,859</string>

    <string>徐水,829</string>

    <string>宣化,373</string>

    <string>盐山,854</string>

    <string>阳原,372</string>

    <string>易县,790</string>

    <string>永年,536</string>

    <string>永清,799</string>

    <string>玉田,802</string>

    <string>元氏,18</string>

    <string>赞皇,21</string>

    <string>枣强,873</string>

    <string>张北,347</string>

    <string>张家口,743</string>

    <string>赵县,11</string>

    <string>正定,446</string>

    <string>涿鹿,747</string>

    <string>涿州,786</string>

    <string>遵化,759</string>

    <string>涞水,3441</string>

    <string>鹿泉,3557</string>

    <string>清苑,3558</string>

    <string>定兴,3559</string>

    <string>博野,3560</string>

    <string>沧县,3561</string>

    </ArrayOfString>

     (4) getWeather 获得天气预报数据

    说明:输入参数:城市/地区ID或名称,

    返回数据:一维字符串数组。

    通过(2)(3)方法可以得到一个地区的代号ID,通过getWeather方法传入id参数即可得到该地区的天气数据:

    例如:我想得到中国河北省张家口市尚义县(346)的天气数据:

          Url: http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx/getWeather?theUserID=&theCityCode=346

    返回数据结果:

    <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://WebXml.com.cn/">

    <string>河北 张家口</string>

    <string>尚义</string>

    <string>346</string>

    <string>2014/08/05 16:29:25</string>

    <string>今日天气实况:气温:21℃;风向/风力:西北风 3级;湿度:33%</string>

    <string>空气质量:暂无;紫外线强度:中等</string>

    <string>

    太阳镜指数:必要。建议佩戴透射比为1级的浅色太阳镜。 穿衣指数:较舒适。建议穿薄外套或牛仔裤等服装。 旅游指数:适宜。风稍大,但仍可尽情地享受大自然风光。 运动指数:较适宜。推荐进行室内运动。 洗车指数:较不宜。风力较大,洗车后会蒙上灰尘。 化妆指数:去油。请选用露质面霜打底,水质无油粉底霜。 感冒指数:极易发。温差极大,风力较强,极易感冒。 空气污染指数:暂无。 紫外线指数:中等。涂擦SPF大于15、PA+防晒护肤品。 舒适度指数:舒适。白天不冷不热,风力不大。

    </string>

    <string>8月5日 多云转晴</string>

    <string>8℃/26℃</string>

    <string>西北风4-5级</string>

    <string>1.gif</string>

    <string>0.gif</string>

    <string>8月6日 晴</string>

    <string>9℃/24℃</string>

    <string>西北风转西南风3-4级</string>

    <string>0.gif</string>

    <string>0.gif</string>

    <string>8月7日 多云</string>

    <string>12℃/24℃</string>

    <string>西南风3-4级转4-5级</string>

    <string>1.gif</string>

    <string>1.gif</string>

    <string>8月8日 多云</string>

    <string>13℃/26℃</string>

    <string>西南风4-5级</string>

    <string>1.gif</string>

    <string>1.gif</string>

    <string>8月9日 雷阵雨转多云</string>

    <string>12℃/25℃</string>

    <string>西南风3-4级</string>

    <string>4.gif</string>

    <string>1.gif</string>

    </ArrayOfString>

     

     

    熟悉了接口的各个方法的使用后,在项目中通过URL打开连接获取数据,然后将天气数据进行处理即可。

    展开全文
  • java获取实时天气预报数据

    千次阅读 2019-01-13 17:51:24
    数据是从 www.webxml.com.cn上免费获取的。有需要也可以去购买服务。 api可以去该网站查看,...需要显示到页面,可以将数据序列化成json格式,再到页面去获取设值。 希望对新手有帮助。不喜勿喷 public class...

    数据是从 www.webxml.com.cn上免费获取的。有需要也可以去购买服务。

    api可以去该网站查看,这里用的是GET方式请求

    123

    每个城市citycode 也需要从这个网站上面去下载。

    解析xml用到的是xwork-core-2.3.15.1.jar  

    需要显示到页面,可以将数据序列化成json格式,再到页面去获取设值。

    希望对新手有帮助。不喜勿喷

    public class WeatherUtil {
    	// private static final long serialVersionUID = 1L;
    	private static final String SERVICES_HOST = "www.webxml.com.cn";// 主机
    	private static final String WEATHER_SERVICES_URL = "http://ws.webxml.com.cn/WebServices/WeatherWS.asmx/";
    	// 获取天气																	getWeather?theCityCode=&theUserID=
    	private static final String WEATHER_QUERY_URL = WEATHER_SERVICES_URL	+ "getWeather?theUserID=&theCityCode=";
    
    
    	public static List<String> getWeathers(int cityCode) {
    		//定义一个集合装载添加数据
    		List<String> weatherList = new ArrayList<String>();
    		/*获取xml文档对象*/
    		Document document;
    		/*获取解析工厂*/
    		DocumentBuilderFactory documentBF = DocumentBuilderFactory.newInstance();
    		//设定命名空间
    		documentBF.setNamespaceAware(true);
    		try {
    			//初始xml工厂
    			DocumentBuilder db = documentBF.newDocumentBuilder();
    			//获取天气数据接口返回的数据
    			URL urlObj = new URL(WEATHER_QUERY_URL+ cityCode);
    			// 打开连接
    			URLConnection urlConn = urlObj.openConnection(); 
    			// 通过地址访问主机,设置请求代理
    			urlConn.setRequestProperty("Host", SERVICES_HOST);
    			//开始连接
    			urlConn.connect();
    			//读取
    			InputStream inputStream = urlConn.getInputStream();
    			//开始解析
    			document = db.parse(inputStream);
    			//解析string节点
    			NodeList nl = document.getElementsByTagName("string");
    			System.out.println(nl);
    			int len = nl.getLength();
    			for (int i = 0; i < len; i++) {
    				Node n = nl.item(i);//获取每一个string节点     
    				//n.getFirstChild()获取文本节点
    				String weather = n.getFirstChild().getNodeValue();
    				weatherList.add(weather);
    			}
    			inputStream.close();
    		} catch (ParserConfigurationException e) {
    			e.printStackTrace();
    		} catch (SAXException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		return weatherList;
    	}
    	
    
    	public static void main(String[] args) {
    		List<String> strings = TmWeatherUtil.getWeathers(1665);
    		System.out.println(strings);
    	}
    }

     有问题请留言

    展开全文
  • 后来发现高德还有天气预报的接口,于是加了一个天气预报模块。 高德API的使用 说实话这个怎么使用,高德自己的文档比我说的清楚,我再说也是狗尾续貂。简单来说就是申请key,在&lt;script&gt;标签中写清楚...

        本来是在网上看一下地图和天气,结果沉迷于高德地图无法自拔,想着自己也做一个简单的地图。后来发现高德还有天气预报的接口,于是加了一个天气预报模块。

        高德API的使用

        说实话这个怎么使用,高德自己的文档比我说的清楚,我再说也是狗尾续貂。简单来说就是申请key,在<script>标签中写清楚自己的key,然后在另外一个<script>标签中写js函数,直接复制开发文档的内容即可。

        高德开发文档:https://lbs.amap.com/api/javascript-api/summary

        开发步骤:

        找一个自己喜欢的网页界面,右击-->查看源代码-->复制粘贴到自己的index.html页面。

        引入key值 。

        复制文档中的js函数。

        开发思路:

        打开页面--->获取位置信息--->根据位置查询天气信息。

        一些注意事项:

        申请key的时候要注意,web服务和web端的key不是一回事。否则会报错。

        定位有两种途径,浏览器定位和ip定位。前者精确但是要用户开启浏览器定位,而且对网速也有要求,1秒内没有定位的话就会显示定位失败,这个时间自己可以设定。后者只能定位到市级行政区。

        java 获取天气预报信息 

        开发步骤:

        找一个免费的适合自己的天气预报接口。我用的是新知天气https://www.seniverse.com/doc#suggestion

        (新知天气有一个专门的生成url的UrlUtil.java,不知道其他的数据提供商有没有。)

    public class XinZhiUrlUtil {
    
        private static  String TIANQI_DAILY_WEATHER_URL = "https://api.seniverse.com/v3/weather/daily.json";
    
        private static String TIANQI_API_SECRET_KEY = "APIkey";
    
        private static String TIANQI_API_USER_ID = "userId";
    
        /**
         * Generate HmacSHA1 signature with given data string and key
         * @param data
         * @param key
         * @return
         * @throws SignatureException
         */
        private static String generateSignature(String data, String key) throws SignatureException {
            String result;
            try {
                SecretKeySpec signingKey = new SecretKeySpec(key.getBytes("UTF-8"), "HmacSHA1");
                Mac mac = Mac.getInstance("HmacSHA1");
                mac.init(signingKey);
                byte[] rawHmac = mac.doFinal(data.getBytes("UTF-8"));
                result = new sun.misc.BASE64Encoder().encode(rawHmac);
            }
            catch (Exception e) {
                throw new SignatureException("Failed to generate HMAC : " + e.getMessage());
            }
            return result;
        }
    
        /**
         * Generate the URL to get diary weather
         * @param location
         * @param language
         * @param unit
         * @param start
         * @param days
         * @return
         */
        public static String generateGetDiaryWeatherURL(
                String location,
                String language,
                String unit,
                String start,
                String days
        )  throws SignatureException, UnsupportedEncodingException {
            String timestamp = String.valueOf(System.currentTimeMillis());
            String params = "ts=" + timestamp + "&ttl=30&uid=" + TIANQI_API_USER_ID;
            String signature = URLEncoder.encode(generateSignature(params, TIANQI_API_SECRET_KEY), "UTF-8");
            return TIANQI_DAILY_WEATHER_URL + "?" + params + "&sig=" + signature + "&location=" + location + "&language=" + language + "&unit=" + unit + "&start=" + start + "&days=" + days;
        }
    
        public static void main(String args[]){
           // DemoJava demo = new DemoJava();
            try {
                String url = XinZhiUrlUtil.generateGetDiaryWeatherURL(
                        "beijing",   //城市信息
                        "zh-Hans",   //语言信息
                        "c",            //c 表示摄氏度, f表示华氏度
                        "0",           //0 表示今天,1表示明天,-1表示昨天(收费)
                        "2"            //查询天数
                );
                System.out.println("URL:" + url);
            } catch (Exception e) {
                System.out.println("Exception:" + e);
            }
    
        }
    }

        新建java获取天气的工具类。

    import java.io.BufferedReader;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.SocketTimeoutException;
    import java.net.URL;
    import java.net.URLConnection;
    
    import java.util.HashMap;
    import java.util.Map;
    
    import net.sf.json.JSONArray;
    import net.sf.json.JSONObject;
    import org.springframework.stereotype.Component;
    
    /**
     * java调用新知天气预报接口
     *
     * @author Administrator
     *
     */
    @Component
    public class WeatherUtil {
    
        /**
         * 获取一周天气
         * 方 法 名:getWeekWeatherMap
         * @param cityName  城市名称
         */
        public  static  Map getTodayWeatherMap(String cityName)
                throws IOException, NullPointerException {
            // 连接新知天气的api
            URL url = new URL("你刚才生成的url");
            URLConnection connectionData = url.openConnection();
            connectionData.setConnectTimeout(2000);
            Map map = new HashMap();
            try {
                BufferedReader br = new BufferedReader(new InputStreamReader(
                        connectionData.getInputStream(), "UTF-8"));
                StringBuilder sb = new StringBuilder();
                String line = null;
                while ((line = br.readLine()) != null){
                    sb.append(line);
                }
                String datas = sb.toString();
                JSONObject jsonData = JSONObject.fromObject(datas);
                //返回的是一个JSONArray,数组形式
                JSONArray results = jsonData.getJSONArray("results");
                //目前只需要当天的天气情况,因此只取出第一个对象即可
                JSONObject result = results.getJSONObject(0);
                //根据对象的"key"值获取数据
    
                //城市名称信息   存入map
                JSONObject location = result.getJSONObject("location");
                map.put("name", location.getString("name").toString());
    
                //天气信息     存入map
                JSONArray dailys = result.getJSONArray("daily");
                JSONObject daily = dailys.getJSONObject(0);
                map.put("text_day", daily.getString("text_day").toString());
                map.put("text_night", daily.getString("text_night").toString());
                map.put("low", daily.getString("low").toString());
                map.put("high", daily.getString("high").toString());
                map.put("wind_direction", daily.getString("wind_direction").toString());
                map.put("wind_scale", daily.getString("wind_scale").toString());
            } catch (SocketTimeoutException e) {
                System.out.println("连接超时");
            } catch (FileNotFoundException e) {
                System.out.println("加载文件出错");
            }
    
            return map;
    
        }
    
    
    
        public static void main(String[] args) {
            try {
                //测试获取当天
                Map map = WeatherUtil.getTodayWeatherMap("beijing");
                System.out.println(map.toString());
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    

        运行main方法进行测试。

         获取源码:

        源码地址:https://github.com/bian1234/studyNote/tree/master/APILearn/map

        项目截图:

    展开全文
  • 获取JAVA调用HTTP接口的方法 package wzgr; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; import java.util.List; import java....

    原文链接地址

    获取到JAVA调用HTTP接口的方法

    package wzgr;
     
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.net.URL;
    import java.net.URLConnection;
    import java.util.List;
    import java.util.Map;
     
     
     
    public class HttpRequest {
    	
     	public static void main(String[] args) {
    		
    		String b=HttpRequest.sendGet("http://www.XXXX.com/......");
    		System.out.println(b);
    	}
    
    
        public static String sendGet(String url) {
            String result = "";
            BufferedReader in = null;
            try {
                String urlNameString = url;
                URL realUrl = new URL(urlNameString);
                // 打开和URL之间的连接
                URLConnection connection = realUrl.openConnection();
                // 设置通用的请求属性
                connection.setRequestProperty("accept", "*/*");
                connection.setRequestProperty("connection", "Keep-Alive");
                connection.setRequestProperty("user-agent",
                        "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
                // 建立实际的连接
                connection.connect();
                // 获取所有响应头字段
                Map<String, List<String>> map = connection.getHeaderFields();
                // 遍历所有的响应头字段
                for (String key : map.keySet()) {
                    System.out.println(key + "--->" + map.get(key));
                }
                // 定义 BufferedReader输入流来读取URL的响应
                in = new BufferedReader
                    (new InputStreamReader(connection.getInputStream(), "UTF-8"));
                String line;
                while ((line = in.readLine()) != null) {
                    result += line;
                }
            } catch (Exception e) {
                System.out.println("发送GET请求出现异常!" + e);
                e.printStackTrace();
            }
            // 使用finally块来关闭输入流
            finally {
                try {
                    if (in != null) {
                        in.close();
                    }
                } catch (Exception e2) {
                    e2.printStackTrace();
                }
            }
            return result;
        }
     
    }
    
    

    二、

    使用天气接口,接口获取天气,后面的101170301为城市编号。各城市编号连接下载地址"https://download.csdn.net/download/weixin_38959210/10793554";

    @RequestMapping(value = "/tianqi.do")
    	public JSONObject tianqi(HttpServletRequest request,HttpServletResponse response) throws UnsupportedEncodingException {
    		request.setCharacterEncoding("utf-8");
    		response.setCharacterEncoding("UTF-8");
    		System.out.println("/tianqi.do打印出的东西:"+cn.temptation.web.tianqi.sendGet("http://t.weather.sojson.com/api/weather/city/101170301"));
    		 
    		 return (JSONObject) JSON.parse(cn.temptation.web.tianqi.sendGet("http://t.weather.sojson.com/api/weather/city/101170301")); 
     
    	}
    
    

    以上为后台代码:

    前台html代码为:

    <table border="1">
      <tr>
        <td>城市</td>
        <td id=city></td>
      </tr>
      <tr>
        <td>更新时间</td>
        <td id=updateTime></td>
      </tr>
      <tr>
        <td>湿度</td>
        <td id=shidu></td>
      </tr>
      <tr>
        <td>pm2.5</td>
        <td id=pm25></td>
      </tr>
      <tr>
        <td>pm10</td>
        <td id=pm10></td>
      </tr>
      <tr>
        <td>空气质量</td>
        <td id=quality></td>
      </tr>
      <tr>
        <td>温度</td>
        <td id=wendu></td>
      </tr>
      <tr>
        <td>空气指数</td>
        <td id=ganmao></td>
      </tr>
    </table>
    
    

    js代码:

    $(function(){ 
     
     
    function tianqi(){
    	$.ajax({
    		 url: "tianqi.do",
    		 type: "POST",
    		 datatype: "json", 
    		 contentType: "application/json", 
    		 success: function(data){
    			 $("#time").html(data.time);
    			 $("#city").html(data.cityInfo.city);
    			 $("#updateTime").html(data.cityInfo.updateTime);
    			 $("#shidu").html(data.data.shidu);
    			 $("#pm25").html(data.data.pm25);
    			 $("#pm10").html(data.data.pm10);
    			 $("#quality").html(data.data.quality);
    			 $("#wendu").html(data.data.wendu);
    			 $("#ganmao").html(data.data.ganmao);
    		 },
    		 error:function(){
    			 alert("获取数据失败");
    		 }
    	});
    		
    }
    
    ## 三
    	天气API(需注册获取key):https://www.sojson.com/blog/305.html
    ## 四
    	免费API(无需注册,不知道稳不稳定):http://t.weather.itboy.net/api/weather/city/101121301
    	demo地址:https://www.sojson.com/blog/349.html	
    
    
    
    

    看完文章了可以试试下面这个接口:

    http://i.tianqi.com/index.php?c=code&id=12&icon=1&num=5

    展开全文
  • java实现天气预报

    千次阅读 热门讨论 2018-09-24 18:25:44
    上一篇文章给大家介绍了java如何根据IP地址定位地理位置,文章里也提到了我做过的一个天气预报, 那么这篇文章将给大家介绍:java如何实现天气预报。 开始之前还是先给大家看看我做的天气预报效果吧。 下面这个是...
  • 本工程主要实现java获取天气预报的信息步骤1,创建工程weatherDemo2,创建包结构3,创建类4,访问第三方接口 打开主机方法5,获取省份id方法6,获取市id方法7,获取天气的方法8,编写servlet9,发布运行 java代码 ...
  • java获取天气的方法

    万次阅读 热门讨论 2019-09-17 16:21:18
    java的方式封装了一个天气的接口,查询了好多,都是要收费的,但是还是有免费的方式, 这块我用的是和风天气的接口封装的方法如下: /** * * 获取实时天气1<br> * 方 法 名: getTodayWeather <br>...
  • java获取某地天气

    2018-07-13 15:34:46
    java代码获取某地一周天气,以及当天的详细天气信息,完整版的测试代码
  • 基于Java实现的简易天气预报,实现平台为Android Studio,模型为mvc,接口获取解析格式为xml,功能:一、选择城市(包括获得其中数据库中城市代码信息) 二、更新信息 三、更新六日信息
  • 主要介绍了java调用中国天气网api获得天气预报信息的方法,可实现调用温度、风力风向及近期天气状况等功能,具有一定参考借鉴价值,需要的朋友可以参考下
  • java获取天气信息

    2013-07-26 16:17:23
    java获取天气信息
  • 开发工具:IDEA,通过WEB SERVICE 解读天气预报WSDL获取天气预报信息
  • wenserver获取天气预报数据,实现android显示天气信息
  • java获取中国各地天气情况,以及包含数据库文件的城市编号,作者已填写,可直接拿来使用
  • Java通过webservice获取天气预报情况

    千次阅读 2017-04-30 19:21:56
    Java调用webservice天气预报(使用JDK自带的命令wsimport解析WSDL文件) webservice 天气预报 Java
  • Java调用天气预报的Webservice接口(使用JDK自带的命令wsimport解析WSDL文件,不需要引用额外的jar包)。一个小例子, 项目结构:其中com.gl.weather包里面的信息,是自动生成的。先在百度上找到天气预报的...
  • IDEA工程,Java获取详细的天气数据。需注册中国气象数据中心,免费试用7天。 可参考博主博文:https://blog.csdn.net/haoranhaoshi/article/details/106938218
  • 本项目是一个自动联网获取天气信息并且可以在指定时间发送给某个人的小例子源码,其实这个例子非常适合一些情侣或者家人朋友之间使用,如果再稍微扩展一下就是一个不错的例子,例如每天给异地的女票定时发天气信息...
  • 案例1:获取天气预报信息 需求说明 搭建开发环境,实现从“hao123.com”中获取当地天气预报信息,从控制台输出结果 分析 访问网址:https://www.hao123.com 分析网站URL、文档内容特征 获取网页内容 拆分出需求内容 ...
  • JAVA获取天气情况

    千次阅读 2020-02-16 17:23:54
    笔者曾经想在情人节送给女朋友一个礼物,就是可以把每天的天气情况加上一些暖心的小情话每天给对象发送邮件或者是短信(收费),但是后来觉得过于程序员话,就搁浅了。没想到过了几天,公司就来了一个项目,其中有一...
  • java根据城市获取当天天气和一周天,注意导入包。
  • 使用Java代码一步一步从天气预报网站获取天气预报数据。
  • php,java获取天气预报代码

    千次阅读 2015-11-11 08:35:09
    最安全官方的php,java天气预报代码,来自于中国气象局 PHP获取天气: //PHP代码: set_time_limit(0); $private_key = 'XXX'; $appid='XXX'; $appid_six=substr($appid,0,6); $areaid = '101210304'; $type='...
  • java,android,天气预报,返回7天内指定城市的天气预报
  • Java获取天气情况

    2020-12-24 11:05:41
    背景:项目中有个需求是根据行政区划编码获取当天天气情况,于是开始在网上找各种API,但是经过测试发现不是接口返回值乱码就是接口经常挂掉,后来经过多方搜索发现高德开放平台的天气查询接口很好用, 地址:...
  • java天气预报通过数据接口获取

    热门讨论 2008-09-04 17:10:10
    服务器提供webservices 数据接口,在通过客户端获取实时天气信息

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,515
精华内容 7,806
关键字:

java获取天气预报

java 订阅