开发App时,是否遇到需要为用户提供实时天气信息或未来天气信息的烦恼。
但是自行采集难度虽说不大,但过程繁琐,耗时长,且经常需要维护,还要解决IP被黑的困局。。。
唉。。。
特别提示:技术大牛请跳过以下内容
当然,已经有人帮我们想好了,各大api接口平台应运而生,琳琅满目啊,但前提是,都不是免费的。。。。。。
再唉。。。
那有是否需求一个免费的天气接口或者说免费的API接口平台呢?
点睛数据就有类似的接口
且是免费的,免费的,免费的,重要的事情说三遍!!!!
网址就自行百度吧,点睛数据的接口调用相当适合基础薄弱的小白用户,下面是简单的示例,但是有真实需要的请自行前往官网查看文档了解详细信息
话不多说,开撸:
先来了解一下,请求参数
参数名 | 参数说明 | 可选值 | 备注 | 必填项 |
---|---|---|---|---|
citycode | 城市代码 | 速度快,准确率高,推荐等级为1级(建议优先使用该方式获取数据) | ||
cityname_ch | 城市名称(中文) | 速度偏慢,准确率高,推荐等级为3级 | ||
cityname_py | 城市名称(拼音) | 速度偏慢,准确率偏低,推荐等级为4级(不推荐) | ||
ip | IP地址 | 速度快,准确率较高,推荐等级为2级(使用此方法较为简单,但准确率稍欠佳,请斟酌使用) | ||
jwd | 经纬度,输入格式如: 经度|纬度 | 速度快,准确率较高,推荐等级为2级(使用此方法较为简单,但准确率稍欠佳,请斟酌使用) | ||
cn_to_unicode | 汉字Unicode转码 | 1 0 | 本设置是对服务器返回数据时是否对中文汉字进行unicode转码,为增强兼容性,默认以unicode转码 | |
token | 密匙 | 您的token密匙 | 是 | |
datatype | 返回的数据类型 | json xml | json/xml 可选,默认为json格式 |
如表格,token参数 是必须的
token参数是需要用户注册账号并认证手机号码后才能申请的,这个是每个用户独一的,需要严格保管啊。
如表格所见,其他参数可以都不需要,意思是用户啥都不提供,服务器会根据ip地址返回ip地址相应地区的天气信息,真心nice
当然,如果你想根据经纬度来获取天气也可以,数据更准确
还有城市代码/城市名/城市拼音等获取方式,随心所欲就可以了
如果觉得麻烦,不想自己写代码,官网还给出了示例代码,轻松复制,修改个token就可以调试了,真easy。。。
对于已经拥有高人一等的发际线的我来说,妈妈再也不用担心我撸代码继续掉头发了
以下官网上还给出来多个测试代码
java代码请求示例
/**
*点睛数据:新实时天气,使用JAVA方式调用接口简单示例
* @author 点睛数据
* djapi.cn
*/
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class apidemo {
public static final String citycode = "101161010";
public static final String cityname_ch = "";
public static final String cityname_py = "";
public static final String ip = "";
public static final String jwd = "";
public static final String cn_to_unicode = "1";
public static final String token = "用户个人token";
public static final String datatype = "json";
public static void main(String[] args) {
try {
URL url = new URL("http://api.djapi.cn/ipaddr/get");
HttpURLConnection connect = (HttpURLConnection)url.openConnection();
connect.addRequestProperty("encoding","UTF-8");
connect.setDoInput(true);
connect.setDoOutput(true);
connect.setRequestMethod("GET");//POST or GET
OutputStream output = connect.getOutputStream();
OutputStreamWriter outputstreamreader = new OutputStreamWriter(output);
BufferedWriter writer = new BufferedWriter(outputstreamreader);
// 发送 请求
String params="&citycode="+citycode+"&cityname_ch="+cityname_ch+"&cityname_py="+cityname_py+"&ip="+ip+"&jwd="+jwd+"&cn_to_unicode="+cn_to_unicode+"&token="+token+"datatype="+datatype;
writer.write(params);
// 强制清空缓冲区 输出数据
writer.flush();
// 设置好 输入流 -- 因为 只有发送数据之后才会有接收数据
InputStream inputstream = connect.getInputStream();
InputStreamReader inputstreamreader = new InputStreamReader(inputstream);
BufferedReader bufferreader = new BufferedReader(inputstreamreader);
// 上述步骤将数据封装好之后 即可将数据读取出来了
String outputstring;
StringBuilder strbuilder = new StringBuilder();
while((outputstring=bufferreader.readLine())!= null){
strbuilder.append(outputstring);
}
writer.close();
bufferreader.close();
output.close();
outputstreamreader.close();
inputstream.close();
inputstreamreader.close();
System.out.println(strbuilder);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
PHP代码示例
<?php
header('Content-Type:text/html;charset=utf-8');
date_default_timezone_set('PRC');
class apidemo
{
public $apipath='api.djapi.cn/rtweather2/get';
public $params;
public function __construct($params){
$this->params=http_build_query($params);
return $this->get();
}
public function get($post_array)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $this->apipath);
curl_setopt($ch, CURLOPT_POSTFIELDS, $this->params);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
}
$post_array = array(
'citycode' => '101161010'
'cityname_ch' => ''
'cityname_py' => ''
'ip' => ''
'jwd' => ''
'cn_to_unicode' => '1'
'token' => '9f2d610a0d************5940a173e6'
'datatype' => 'json'
);
$result=new apidemo($post_array);
echo '数据返回如下:'.PHP_EOL;
var_dump($result);
返回结果示例,json格式
{
ApiName: "rtweather2",
ErrorCode: 0,
ErrorReason: "no",
Result: {
Warning: {
IsWarning: 0,
Time: "",
Province: "",
City: "",
District: "",
Level: {
Code: "",
Cn: "",
En: ""
},
WarningWeather: {
Code: null,
Weather: null
},
WarningDetail: "",
MsgFrom: ""
},
Rain: {
Last24h: {
Code: 0,
En: "0mm",
Cn: "0毫米"
},
Now: {
Code: 0,
En: "mm",
Cn: "毫米"
}
},
Time: {
Date: {
Cn: "2019年12月21日",
Code: "20191221"
},
Week: {
Code: "6",
Cn: "星期六"
}
},
UpdateTime: "23:26",
City: {
En: "shenzhen",
Code: "101280601",
Cn: "广东-深圳"
},
LifeTips: {
uv_level: "最弱",
uv_tips: "辐射弱,涂擦SPF8-12防晒护肤品。",
jf_level: "五颗星",
jf_tips: "天气较舒适,减肥正当时。",
xt_level: "较易波动",
xt_tips: "血糖较易波动,注意监测。",
cy_level: "较舒适",
cy_tips: "建议穿薄外套或牛仔裤等服装。",
xc_level: "适宜",
xc_tips: "天气较好,适合擦洗汽车。",
wr_level: "较差",
wr_tips: "气象条件较不利于空气污染物扩散。。"
},
Temp: {
Sheshi: {
Code: 17,
String: "17℃"
},
Huashi: {
Code: 62,
String: "62℉"
}
},
Wet: "63%",
Weather: {
String: "阴",
Code: "w2"
},
QiYa: {
Code: 1013,
StringCn: "1013百帕",
StringEn: "1013hPa"
},
Wind: {
Direction: "北风",
DirectionCode: "N",
LevelCn: "3级",
Level: 3,
SpeedHtml: "<12km/h",
SpeedCn: "小于12公里每小时",
SpeedEn: "<12km/h"
},
Aqi: {
Aqi: "56",
AqiLevelCode: 1,
AqiLevel: "良"
}
}
}
好了,希望以上内容对有相关需求的用户有所帮助。
有需要的用户请自行百度点睛数据去薅羊毛吧。。。。。