• 太阳集团tcy8722

    当前位置: 首页 >应用方案 >技术应用 >

    基于天气API接口讲解HTTP协议的使用教程

    HTTP超文本传输协议是一个基于TCP/IP通信协议来传递数据的(HTML文件、图片文件、查询结果等),本文将使用NA111工业级串口服务器或者其他支持TCP/IP协议的网络联网模块(比如EC04系列、EC03系列、4G-05等),本文主要通过TCP客户端模式进行HTTP请求,有时也会使用HTTPC模式进行HTTPC请求(前提时HTTP服务器支持该模式请求报文)。

    首先需要找到可以请求的天气查询服务器,这里介绍两个免费接口,需要注册使用:

    丫丫天气:http://www.yytianqi.com/

    心知天气:http://www.seniverse.com/

    还有很多类似的API接口,他们在使用方式上差异不大。

    丫丫天气查询

    1.打开天气服务器网址http://www.yytianqi.com/点击上方注册按钮,提供邮箱和手机号进行注册,

    2.注册完成后登录,第一次注册赠送9天高级会员,可以查询更多的天气数据,在会员管理中查看用户密钥(key),此密钥在请求数据中作为用户有效性判断(判断会员等级,非会员服务器拒绝请求),因此必须注册使用,并使用邮箱激活账号;

    免费会员有请求限制比如心知天气的每分钟最多20次,丫丫天气的每小时30次,不同服务器限制不同需要通过平台查询请求限制。


    3.点击API介绍详细介绍了API的使用方式,通过GET方式请求:

    地址:api.yytianqi.com:80,

    URL:/接口名称?

    请求数据:city=城市ID&key=用户key组合成为请求数据:

    1

    这里我采用城市ID的方式进行请求,点击丫丫天气城市ID编码列表:

    配置2

    以查询“成都”城市编码为例,打开网站后使用“Ctrl+F”搜索成都,编码为:CH270101,如图所示:

    配置3

    丫丫天气的API接口是基于HTTP1.0协议开发,因此串口服务器无法通过HTTP客户端模式实现天气请求,只能利用TCP客户端结合短连接实现;

    配置4

    串口服务器配置为动态IP与随机端口,工作模式为TCP客户端,并使能短连接(非必要,建议使能),配置目标IP与端口(api.yytianqi.com:80),详细配置如下图所示:

    配置5

    4.打开串口调试助手XCOM,发送GET请求包GET http://api.yytianqi.com/observe?city=CH010100&key=ixxxxxxxxxxxxxxh HTTP/1.0\r\n\r\n”(\r\n\r\n指代两个换行符):

    配置6

    心知天气查询

    1、心知天气与丫丫天气在账户认证上基本相同,但心知天气支持更安全的签名认证,首先注册账号获取密钥,

    登录后还需开通“天气服务”,如下图所示:

    配置7

    2、在申请完成后系统会自动生成API密钥,如图所示:

    配置8

    3、心知天气的请求分为两种方式:

    私钥认证http://api.seniverse.com/v3/weather/now.json?key=your_private_key&locations=beijing&language=zh-Hans&unit=c

    签名认证方式

    http://api.seniverse.com/v3/weather/now.json? locations=beijing&language=zh-Hans&unit=c&ts=1443079775&ttl=300&uid=your_public_key

    1私钥认证

    与丫丫天气基本相同,见请求包的key=your_private_key,替换为你的私钥,如图:

    配置9

    心知天气也采用HTTP1.0协议,也不能使用串口服务器的HTTP客户端模式,串口服务器配置如下图所示:

    配置10

    使用串口调试助手发用请求包:

    GET http://api.seniverse.com/v3/weather/now.json?key=x&locations=chengdu&language=en&unit=c

    locations=chengdu(支持城市ID、拼音、IP、GPS、城市中文名);

    language=en(支持zh-Hans、en等);

    unit=c(单位,cf);

    配置11

    2签名认证

    “公钥 + 私钥” 验证方式更加安全。请求地址中只包含你的“公钥”以及用你的“私钥”制作的签名,因此不会在请求地址中泄露你的私钥。

    签名指的是通过HMAC-SHA1,对请求参数加密后得到的签名字串进行身份验证,避免了将“私钥”明文包含在请求中而造成泄露。

    HMAC-SHA1在线加密网站:http://1024tools.com/hmac

    请求示例:

    GET http://api.seniverse.com/v3/weather/now.json?locations=beijing&language=en&unit=c&ts=1652095247&ttl=86400&uid=PlhQcyak4-TF5G0UU&sig=58QAjUWFAMpl7374DUVIiplsPqw%3d

    locations=beijing&language=en&unit=c不需要使用HMAC-SHA1进行加密,只需要对ts=1652095247&ttl=1800(非必要,不填默认为1800&uid=PlhQcyak4-TF5G0UU参数进行加密,如下图所示:

    配置12

    签名:BlEgDUcNlP3Yhn7QvuGSWS15wqc=,=”在HTTP中不能直接使用,需要转移为%3d,转换后BlEgDUcNlP3Yhn7QvuGSWS15wqc%3d

    最终请求数据为:

    GET http://api.seniverse.com/v3/weather/now.json?locations=beijing&language=en&unit=c&ts=1652682517&ttl=86400&uid=PlhQcyak4-TF5G0UU&sig=BlEgDUcNlP3Yhn7QvuGSWS15wqc%3d

    串口服务器配置与私钥相同,通过串口调试助手发送数据:

    配置13

    通过编写MCGS串口数据解析脚本可以实现如下效果:

    配置14


    太阳集团tcy8722