HTTP超文本傳輸協(xié)議是一個(gè)基于TCP/IP通信協(xié)議來傳遞數(shù)據(jù)的(HTML文件、圖片文件、查詢結(jié)果等),本文將使用NA111工業(yè)級(jí)串口服務(wù)器或者其他支持TCP/IP協(xié)議的網(wǎng)絡(luò)聯(lián)網(wǎng)模塊(比如EC04系列、EC03系列、4G-05等),本文主要通過TCP客戶端模式進(jìn)行HTTP請(qǐng)求,有時(shí)也會(huì)使用HTTPC模式進(jìn)行HTTPC請(qǐng)求(前提時(shí)HTTP服務(wù)器支持該模式請(qǐng)求報(bào)文)。
首先需要找到可以請(qǐng)求的天氣查詢服務(wù)器,這里介紹兩個(gè)免費(fèi)接口,需要注冊(cè)使用:
丫丫天氣:http://www.yytianqi.com/
心知天氣:https://www.seniverse.com/
還有很多類似的API接口,他們?cè)谑褂梅绞缴喜町惒淮蟆?/span>
1.打開天氣服務(wù)器網(wǎng)址http://www.yytianqi.com/點(diǎn)擊右上方注冊(cè)按鈕,提供郵箱和手機(jī)號(hào)進(jìn)行注冊(cè),
2.注冊(cè)完成后登錄,第一次注冊(cè)贈(zèng)送9天高級(jí)會(huì)員,可以查詢更多的天氣數(shù)據(jù),在會(huì)員管理中查看用戶密鑰(key),此密鑰在請(qǐng)求數(shù)據(jù)中作為用戶有效性判斷(判斷會(huì)員等級(jí),非會(huì)員服務(wù)器拒絕請(qǐng)求),因此必須注冊(cè)使用,并使用郵箱激活賬號(hào);
免費(fèi)會(huì)員有請(qǐng)求限制比如心知天氣的每分鐘最多20次,丫丫天氣的每小時(shí)30次,不同服務(wù)器限制不同需要通過平臺(tái)查詢請(qǐng)求限制。
3.點(diǎn)擊API介紹詳細(xì)介紹了API的使用方式,通過GET方式請(qǐng)求:
地址:api.yytianqi.com:80,
URL:/接口名稱?
請(qǐng)求數(shù)據(jù):city=城市ID&key=用戶key組合成為請(qǐng)求數(shù)據(jù):
這里我采用城市ID的方式進(jìn)行請(qǐng)求,點(diǎn)擊丫丫天氣城市ID編碼列表:
以查詢“成都”城市編碼為例,打開網(wǎng)站后使用“Ctrl+F”搜索成都,編碼為:CH270101,如圖所示:
丫丫天氣的API接口是基于HTTP1.0協(xié)議開發(fā),因此串口服務(wù)器無法通過HTTP客戶端模式實(shí)現(xiàn)天氣請(qǐng)求,只能利用TCP客戶端結(jié)合短連接實(shí)現(xiàn);
串口服務(wù)器配置為動(dòng)態(tài)IP與隨機(jī)端口,工作模式為TCP客戶端,并使能短連接(非必要,建議使能),配置目標(biāo)IP與端口(api.yytianqi.com:80),詳細(xì)配置如下圖所示:
4.打開串口調(diào)試助手XCOM,發(fā)送GET請(qǐng)求包“GET http://api.yytianqi.com/observe?city=CH010100&key=ixxxxxxxxxxxxxxh HTTP/1.0r”(r指代兩個(gè)換行符):
1、心知天氣與丫丫天氣在賬戶認(rèn)證上基本相同,但心知天氣支持更安全的簽名認(rèn)證,首先注冊(cè)賬號(hào)獲取密鑰,
登錄后還需開通“天氣服務(wù)”,如下圖所示:
2、在申請(qǐng)完成后系統(tǒng)會(huì)自動(dòng)生成API密鑰,如圖所示:
3、心知天氣的請(qǐng)求分為兩種方式:
私鑰認(rèn)證https://api.seniverse.com/v3/weather/now.json?key=your_private_key&location=beijing&language=zh-Hans&unit=c
簽名認(rèn)證方式
https://api.seniverse.com/v3/weather/now.json? location=beijing&language=zh-Hans&unit=c&ts=1443079775&ttl=300&uid=your_public_key
與丫丫天氣基本相同,見請(qǐng)求包的key=your_private_key,替換為你的私鑰,如圖:
心知天氣也采用HTTP1.0協(xié)議,也不能使用串口服務(wù)器的HTTP客戶端模式,串口服務(wù)器配置如下圖所示:
使用串口調(diào)試助手發(fā)用請(qǐng)求包:
GET https://api.seniverse.com/v3/weather/now.json?key=x&location=chengdu&language=en&unit=c
location=chengdu(支持城市ID、拼音、IP、GPS、城市中文名);
language=en(支持zh-Hans、en等);
unit=c(單位,c和f);
“公鑰 + 私鑰” 驗(yàn)證方式更加安全。請(qǐng)求地址中只包含你的“公鑰”以及用你的“私鑰”制作的簽名,因此不會(huì)在請(qǐng)求地址中泄露你的私鑰。
簽名指的是通過HMAC-SHA1,對(duì)請(qǐng)求參數(shù)加密后得到的簽名字串進(jìn)行身份驗(yàn)證,避免了將“私鑰”明文包含在請(qǐng)求中而造成泄露。
HMAC-SHA1在線加密網(wǎng)站:https://1024tools.com/hmac
請(qǐng)求示例:
GET https://api.seniverse.com/v3/weather/now.json?location=beijing&language=en&unit=c&ts=1652095247&ttl=86400&uid=PlhQcyak4-TF5G0UU&sig=58QAjUWFAMpl7374DUVIiplsPqw%3d
location=beijing&language=en&unit=c不需要使用HMAC-SHA1進(jìn)行加密,只需要對(duì)ts=1652095247&ttl=1800(非必要,不填默認(rèn)為1800)&uid=PlhQcyak4-TF5G0UU參數(shù)進(jìn)行加密,如下圖所示:
簽名:BlEgDUcNlP3Yhn7QvuGSWS15wqc=,“=”在HTTP中不能直接使用,需要轉(zhuǎn)移為%3d,轉(zhuǎn)換后BlEgDUcNlP3Yhn7QvuGSWS15wqc%3d
最終請(qǐng)求數(shù)據(jù)為:
GET https://api.seniverse.com/v3/weather/now.json?location=beijing&language=en&unit=c&ts=1652682517&ttl=86400&uid=PlhQcyak4-TF5G0UU&sig=BlEgDUcNlP3Yhn7QvuGSWS15wqc%3d
串口服務(wù)器配置與私鑰相同,通過串口調(diào)試助手發(fā)送數(shù)據(jù):
通過編寫MCGS串口數(shù)據(jù)解析腳本可以實(shí)現(xiàn)如下效果:
7 X 24 銷售服務(wù)熱線
4000-330-990深圳辦事處柯經(jīng)理:18218726658 無錫辦事處劉經(jīng)理:13558641933
成都總部銷售經(jīng)理:
秦 科(無線模塊):18884314654 馮子恒(無線模塊):18828049434
蔡友銀(無線模塊):13882211021 葛宇龍(通信設(shè)備):19138800613
胡兵(外貿(mào)銷售經(jīng)理):18584911141、 sales06@ebyte.com
業(yè)務(wù)郵箱:support@cdebyte.com 全國銷售投訴電話:19934352316
地址:四川省成都市高新西區(qū)西區(qū)大道199號(hào)B5棟(前臺(tái)座機(jī):028-61543675)
?? 成都億佰特電子科技有限公司【版權(quán)所有】 蜀ICP備13019384號(hào)