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

soゝso 2017-12-20 23:08:25 39395
分享到:

序言

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

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

API最新消息

使用此接口的同学,请务必加QQ群(608222884),最近的变动会在群里提醒并通知。

  • 最近 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("http://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);
}

天气预报 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("http://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);
}

天气预报 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,是在万年历功能使用,下面是截图。

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

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


关于作者
目前就职于国内某电商平台公司打杂。。
相关文章
天气预报 API,7天天气预报API,信息全,高精准天气API 接口说明
JSON格式讲解,JSON获取对象,JSONObject和JSONArray的操作
Elasticsearch Java API 获取version,以及数据_version的介绍
HttpClient 获取详细的头信息
Java API接口返回不是JSON的解决方案,SpringMVC返回JSON配置。
Elasticsearch教程,Elasticsearch Java API创建Mapping,指定分词器
Java获取域名,Java从URL地址中获取域名,Java从Request 获取域名
公安局网站备案信息查询API免费查询公安网备 API 代码说明
为什么很多第三方接口,都改成了基于http,直接传递json数据的方式来代替webservice?
Java获取重定向后的真实URL地址
最新文章
Java 随机从 List 随机获取多个不重复对象,Mysql 随机10条数据 77
Linux 安装 Redis 详细步骤讲解 247
Javascript 生成UUID,Java生成UUID 1315
Maven的Mirror和Repository 的详细讲解 3582
JDK1.7中新增自动释放资源接口AutoCloseable讲解 3687
对Java的常用对象(POJO、DTO、PO、BO、VO、DAO)详细解释及应用场景 3404
详解JavaScript中splice()方法,有Demo详细介绍 944
最新VS2012破解 序列号,vs2012旗舰版密钥序列号【收藏】 5110
在windows上安装redis并设置密码,IP绑定【提供安装包】 17141
Elasticsearch操作数据后马上更新的办法 5996
最热文章
免费天气API,全国天气 JSON API接口,可以获取五天的天气预报 39394
Elasticsearch教程(四) elasticsearch head 插件安装和使用 109276
Elasticsearch教程(六) elasticsearch Client创建 73360
Elasticsearch教程(八) elasticsearch delete 删除数据(Java) 70795
Elasticsearch教程(二),IK分词器安装 67567
Elasticsearch教程(三),IK分词器安装 (极速版) 54108
Elasticsearch教程(五) elasticsearch Mapping的创建 51711
Elasticsearch教程(一),全程直播(小白级别) 51531
Elasticsearch教程(七) elasticsearch Insert 插入数据(Java) 47839
Elasticsearch权威指南-中文.pdf,Elasticsearch 中文文档下载 41006

骚码加入我们 / 千人QQ群:259217951

入群需要5元,如果没有QQ钱包,可以先Alipay、微信,赞助然后加群主拉进。

二维码生成 来自 >> 二维码生成器

支付扫码

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

正在加载... ...