免费天气API,全国天气 JSON API接口,可以获取五天的天气预报

JSON 2020-03-03 14:12:58 603059

序言

稳定高效的天气API接口是很少有的,本站前一段时间开发了一个万年历,需要带天气预报,花了几天功夫,集成和容错处理好对外开放的天气接口。天气接口支持返回   JSON  和  XML  结果。并且可以获取到昨天,以及今天和未来4 天的天气预报。那么下面直接介绍天气预报的接口吧。

天气API详情介绍API 中心https://www.sojson.com/api/weather.html ,下面只介绍下调用方式,然后 用  Java  语言调用演示一下。

重要:此接口需要停用,请使用新接口,不限量,不定期更新,本接口只更新一次,新接口地址:https://www.sojson.com/blog/305.html

Java   请求  天气接口  Demo讲解:https://www.sojson.com/blog/349.html (Springboot + Ehcache)

天气接口答疑

1、接口能不能 ajax jsonp 的方式调用?

答:不能,必须后端语言,或者移动端语言调用,比如   Java  、PHP、C#,PY等,或者 Android,iOS 之类。

2、接口每天的更新时间是什么时候?

答:这个接口每天更新一次,时间大概是在凌晨的1~4点这样子。有的时候也有意外情况。

3、接口稳定吗?

答:应该,也许、如果的话,是稳定的。如果不明白的话,你摸着良心觉得您问的是不是废话。

4、天气有哪些状态?天气图片哪里获取?

答:这里有所有状态列表,并且所有状态矢量图都是有的,加群,需要付费5元,QQ 群:259217951,进去后回复“天气图片”,群机器人会告诉你的。如果 QQ 钱包没钱,请去 赞助链接 微信或者支付扫码支付5元,联系群主加入。

5、提示超过2000次是什么意思?

答:这个天气接口每天就更新一次,请你自己做缓存,一天可以请求2000次完全够了,多次提示超过2000,就会封 IP 段。

6、提示有恶意调用是什么意思?

答:因为你一直循环调用,没有做缓存,对服务器造成了很大的压力,请参照第五点。

7、我没有使用2000次,为什么提示超过2000次?

答:因为是采用   IP   段检测,假如你的   IP   是200.148.88.99,那么对于的 IP 段就是200.148.88.* ,也就是这个IP 段下使用的资源是共享的。另外也可能是   CDN   缓存,刷新即可。

7、请求返回状态301?

答:请采用  HTTPS  请求,下面有对应的代码,如果是是  Java  请参考下面的代码,如果是其他语言,请自行百度“语言 + HTTPS”相关关键词。

9、能不能一次性返回多个城市?一次性返回一个组合?能不能一次性返回7天、15天天气?能不能及时更新?能不能不限制3秒一次?能不能... ... ?

答:!!!不过是收费。

PS:不要对我要求过多,我对你保证不了什么。理论上你不付费,我不能给你提供什么承诺。都是要成本的。虽说现在接口很稳定。但是我还是不会提供保证。另外,接口不是我求着你用,你爱用不用。虽然你使用本站,是我的上帝,但是技术面前,都是平等的,别一副高高在上的口吻和我说话。谢谢。

API最新消息

使用此接口的同学,请务必加QQ群(608222884 【验证信息 sojson api】)【免费的】,最近的变动会在群里提醒并通知。

  • 最近 API 会变化,目前 API 从免费开放以来到现在,还是很稳定,最高一天达到1.4亿次调用,响应成功率达到98%。还是很赞的。
  • 目前我新购置了集群服务器,把 API 独立出去,涉及到的变化,域名从(www.sojson.com)改成了(api.sojson.com),支持  HTTPS  调用,字段稍微有变化,另外开放了及时天气和15天天气详细数据,不过是收费的,毕竟我也需要维护成本,不过比聚合API肯定便宜。 

接口为什么最近有缓存

因为免费接口触及到了部分商家的奶酪,接口基本每天都会被攻击。 下面是被攻击的截图。不得已开启缓存模式,另外,好消息是新的接口,这些问题都没有,不会有缓存,因为每个人的接口  URL  地址都是不一样的。


 

部分 CC 攻击识别是接口调用太频繁造成的,你说你们的对我的伤害基本是爆击。

天气接口免费额度

1.每天每个IP段拥有2000次免费额度,每次请求间隔为3秒一次,如果没有间隔3秒去请求,永远都不会通过,因为每次请求都是重新计时。

2.请求频繁或者日请求量过大,会直接停封,比如秒并发达到100,比如日请求到达几万,服务器会自动屏蔽。也是禁用IP段。

天气接口调用注意事项

忠告:别把免费资源不当资源,能不能自己稍微做下缓存,或者全局变量方式缓存,要这样的用量,90%以上是无用的请求,那我怎么坚持下去?敬请理解,如果确实需要这么大的量,先联系,说清楚。

天气预报 API 接口 JSON返回

public static void json() throws Exception{
	//参数url化
	String city = java.net.URLEncoder.encode("北京", "utf-8");
	
	//拼地址
	String apiUrl = String.format("https://www.sojson.com/open/api/weather/json.shtml?city=%s",city);
	//开始请求
	URL url= new URL(apiUrl);
	URLConnection open = url.openConnection();
	InputStream input = open.getInputStream();
	//这里转换为String,带上包名,怕你们引错包
	String result = org.apache.commons.io.IOUtils.toString(input,"utf-8");
	//输出
	System.out.println(result);
}
如果  HTTPS  报错,Java请参考:https://www.sojson.com/blog/195.html,如果其他语言,请自行百度“语言 + HTTPS”相关关键词。

天气预报 JSON 返回值:

{
    "data": {
        "yesterday": {
            "date": "26日星期五",
            "high": "高温 31℃",
            "fx": "南风",
            "low": "低温 17℃",
            "fl": "微风",
            "type": "晴"
        },
        "city": "北京",
        "aqi": "83",
        "forecast": [
            {
                "date": "27日星期六",
                "high": "高温 34℃",
                "fengli": "微风级",
                "low": "低温 21℃",
                "fengxiang": "西南风",
                "type": "晴"
            },
            {
                "date": "28日星期天",
                "high": "高温 36℃",
                "fengli": "3-4级",
                "low": "低温 22℃",
                "fengxiang": "北风",
                "type": "多云"
            },
            {
                "date": "29日星期一",
                "high": "高温 29℃",
                "fengli": "微风级",
                "low": "低温 18℃",
                "fengxiang": "东风",
                "type": "阴"
            },
            {
                "date": "30日星期二",
                "high": "高温 30℃",
                "fengli": "微风级",
                "low": "低温 18℃",
                "fengxiang": "南风",
                "type": "阴"
            },
            {
                "date": "31日星期三",
                "high": "高温 32℃",
                "fengli": "3-4级",
                "low": "低温 20℃",
                "fengxiang": "南风",
                "type": "多云"
            }
        ],
        "ganmao": "各项气象条件适宜,发生感冒机率较低。但请避免长期处于空调房间中,以防感冒。",
        "wendu": "27"
    },
    "status": 200,
    "message": "OK"
}

天气预报 API XML返回方式

public static void xml() throws Exception{
	//参数url化
	String city = java.net.URLEncoder.encode("北京", "utf-8");
	
	//拼地址
	String apiUrl = String.format("https://www.sojson.com/open/api/weather/xml.shtml?city=%s",city);
	//开始请求
	URL url= new URL(apiUrl);
	URLConnection open = url.openConnection();
	InputStream input = open.getInputStream();
	//这里转换为String,带上包名,怕你们引错包
	String result = org.apache.commons.io.IOUtils.toString(input,"utf-8");
	//输出
	System.out.println(result);
}
如果  HTTPS  报错,Java请参考:https://www.sojson.com/blog/195.html,如果其他语言,请自行百度“语言 + HTTPS”相关关键词。

天气预报 XML返回值:

<?xml version="1.0" encoding="UTF-8"?>
<resp>
    <city>北京</city>
    <updatetime>13:45</updatetime>
    <wendu>27</wendu>
    <fengli>3级</fengli>
    <shidu>38%</shidu>
    <fengxiang>东风</fengxiang>
    <sunrise_1>04:51</sunrise_1>
    <sunset_1>19:33</sunset_1>
    <sunrise_2></sunrise_2>
    <sunset_2></sunset_2>
    <environment>
        <aqi>83</aqi>
        <pm25>61</pm25>
        <suggest>极少数敏感人群应减少户外活动</suggest>
        <quality>良</quality>
        <MajorPollutants>颗粒物(PM2.5)</MajorPollutants>
        <o3>148</o3>
        <co>1</co>
        <pm10>106</pm10>
        <so2>27</so2>
        <no2>47</no2>
        <time>13:00:00</time>
    </environment>
    <yesterday>
        <date_1>26日星期五</date_1>
        <high_1>高温 31℃</high_1>
        <low_1>低温 17℃</low_1>
        <day_1>
            <type_1>晴</type_1>
            <fx_1>南风</fx_1>
            <fl_1>微风</fl_1>
        </day_1>
        <night_1>
            <type_1>晴</type_1>
            <fx_1>北风</fx_1>
            <fl_1>微风</fl_1>
        </night_1>
    </yesterday>
    <forecast>
        <weather>
            <date>27日星期六</date>
            <high>高温 34℃</high>
            <low>低温 21℃</low>
            <day>
                <type>晴</type>
                <fengxiang>西南风</fengxiang>
                <fengli>微风级</fengli>
            </day>
            <night>
                <type>晴</type>
                <fengxiang>北风</fengxiang>
                <fengli>微风级</fengli>
            </night>
        </weather>
        <weather>
            <date>28日星期天</date>
            <high>高温 36℃</high>
            <low>低温 22℃</low>
            <day>
                <type>多云</type>
                <fengxiang>北风</fengxiang>
                <fengli>3-4级</fengli>
            </day>
            <night>
                <type>阴</type>
                <fengxiang>东北风</fengxiang>
                <fengli>微风级</fengli>
            </night>
        </weather>
        <weather>
            <date>29日星期一</date>
            <high>高温 29℃</high>
            <low>低温 18℃</low>
            <day>
                <type>阴</type>
                <fengxiang>东风</fengxiang>
                <fengli>微风级</fengli>
            </day>
            <night>
                <type>阵雨</type>
                <fengxiang>南风</fengxiang>
                <fengli>微风级</fengli>
            </night>
        </weather>
        <weather>
            <date>30日星期二</date>
            <high>高温 30℃</high>
            <low>低温 18℃</low>
            <day>
                <type>阴</type>
                <fengxiang>南风</fengxiang>
                <fengli>微风级</fengli>
            </day>
            <night>
                <type>多云</type>
                <fengxiang>北风</fengxiang>
                <fengli>微风级</fengli>
            </night>
        </weather>
        <weather>
            <date>31日星期三</date>
            <high>高温 32℃</high>
            <low>低温 20℃</low>
            <day>
                <type>多云</type>
                <fengxiang>南风</fengxiang>
                <fengli>3-4级</fengli>
            </day>
            <night>
                <type>多云</type>
                <fengxiang>南风</fengxiang>
                <fengli>3-4级</fengli>
            </night>
        </weather>
    </forecast>
    <zhishus>
        <zhishu>
            <name>晨练指数</name>
            <value>适宜</value>
            <detail>天气不错,空气清新,是您晨练的大好时机,建议不同年龄段的人们积极参加户外健身活动。</detail>
        </zhishu>
        <zhishu>
            <name>舒适度</name>
            <value>很不舒适</value>
            <detail>白天天气晴好,但烈日炎炎会使您会感到很热,很不舒适。</detail>
        </zhishu>
        <zhishu>
            <name>穿衣指数</name>
            <value>炎热</value>
            <detail>天气炎热,建议着短衫、短裙、短裤、薄型T恤衫等清凉夏季服装。</detail>
        </zhishu>
        <zhishu>
            <name>感冒指数</name>
            <value>少发</value>
            <detail>各项气象条件适宜,发生感冒机率较低。但请避免长期处于空调房间中,以防感冒。</detail>
        </zhishu>
        <zhishu>
            <name>晾晒指数</name>
            <value>极适宜</value>
            <detail>天气不错,极适宜晾晒。抓紧时机把久未见阳光的衣物搬出来晒晒太阳吧!</detail>
        </zhishu>
        <zhishu>
            <name>旅游指数</name>
            <value>较适宜</value>
            <detail>天气较好,感觉有点热,不过有微风伴您一路同行,还是较适宜旅游的,外出请注意防晒哦!</detail>
        </zhishu>
        <zhishu>
            <name>紫外线强度</name>
            <value>很强</value>
            <detail>紫外线辐射极强,建议涂擦SPF20以上、PA++的防晒护肤品,尽量避免暴露于日光下。</detail>
        </zhishu>
        <zhishu>
            <name>洗车指数</name>
            <value>较适宜</value>
            <detail>较适宜洗车,未来一天无雨,风力较小,擦洗一新的汽车至少能保持一天。</detail>
        </zhishu>
        <zhishu>
            <name>运动指数</name>
            <value>较适宜</value>
            <detail>天气较好,户外运动请注意防晒。推荐您进行室内运动。</detail>
        </zhishu>
        <zhishu>
            <name>约会指数</name>
            <value>较不适宜</value>
            <detail>天气较热,建议尽量不要去室外约会,如果外出,请您挑选荫凉的地点。</detail>
        </zhishu>
        <zhishu>
            <name>雨伞指数</name>
            <value>不带伞</value>
            <detail>天气较好,您在出门的时候无须带雨伞。</detail>
        </zhishu>
    </zhishus>
</resp>
<!-- 10.10.162.42(10.10.162.42):38553 ; 10.10.156.163:8080 -->

注意的一点就是,参数中文要转码。要url转码。  Java  如下:

//参数url化
String city = java.net.URLEncoder.encode("北京", "utf-8");

还有一点就是,编码为UTF-8

本站使用的Demo,是在万年历功能使用,下面是截图。

万年历:https://www.sojson.com/time/wannianli.html

如果需要元素图片,也就是对应天气的素材图片,请加QQ群(259217951),然后回复 “天气图片”,会有机器人回复您,给你图片的下载地址,以及图片的对应含义。  JSON  格式的。


版权所属:SO JSON在线解析

原文地址:https://www.sojson.com/blog/234.html

转载时必须以链接形式注明原始出处及本声明。

本文主题:

如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。

关于作者
一个低调而闷骚的男人。
相关文章
天气API全国天气 JSON API接口可以获取五天天气预报
免费天气API天气JSON API,不限次数获取五天天气预报
天气预报 API,7天天气预报API,信息全,高精准天气API 接口说明
天气免费API接口天气API接口请求讲解及源码下载
Elasticsearch Java API 获取version,以及数据_version的介绍
JSON格式讲解,JSON获取对象,JSONObject和JSONArray的操作
Java API接口返回不是JSON的解决方案,SpringMVC返回JSON配置。
公安局网站备案信息查询API免费查询公安网备 API 代码说明
HttpClient 获取详细的头信息
Java 随机从 List 随机获取多个不重复对象,Mysql 随机10条数据
最新文章
Python print() 函数 21
PHP if/else/elseif 语句 81
HTML5 Canvas弧线教程 74
Java赋值运算符 118
XML内部实体和外部实体 217
Java面向对象编程概念 177
PHP回显语句 128
Linux—文件树 142
C语言while循环和do while循环 150
Python元组剖析 214
最热文章
最新MyEclipse8.5注册码,有效期到2020年 (已经更新) 682801
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 674741
免费天气API,全国天气 JSON API接口,可以获取五天的天气预报 603031
免费天气API,天气JSON API,不限次数获取十五天的天气预报 581304
Jackson 时间格式化,时间注解 @JsonFormat 用法、时差问题说明 553167
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 509466
Elasticsearch教程(四) elasticsearch head 插件安装和使用 480074
Jackson 美化输出JSON,优雅的输出JSON数据,格式化输出JSON数据... ... 264931
Java 信任所有SSL证书,HTTPS请求抛错,忽略证书请求完美解决 244332
Elasticsearch教程(一),全程直播(小白级别) 225661
支付扫码

所有赞助/开支都讲公开明细,用于网站维护:赞助名单查看

查看我的收藏

正在加载... ...