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