點擊了解:無線模塊WizFi210
1、HTTP和HTTPS簡介
1.1 HTTP簡介
HTTP 即超文本傳輸協議(Hyper Text Transfer Protocol),客戶端(User Agent)通過WEB瀏覽器或網絡爬蟲等工具向服務器(網站)上指定端口(默認為80)以URL(統一資源定位符,即網址)的形式發起一個 HTTP 請求(一般為GET、POST),服務器監聽到這一請求後會回復一個狀態行+響應消息的主體,從而形成了一個完整的HTTP“請求—響應”過程,而這一過程是建立在TCP連接之上的數據透明傳輸過程。
1.2 HTTPS簡介
HTTPS 全稱Hyper Text Transfer Protocol over Secure Socket Layer,即經過SSL(Secure Socket Layer)加密的HTTP,簡單地說就是HTTP的安全升級版。HTTPS的體係與HTTP大致相同,不同的是通過在HTTP和TCP層之間加入SSL層,達到數據加密和身份驗證的目的。使用HTTPS需要申請CA證書(一般需要付費),採用443端口,現廣泛用於www上安全敏感的通訊。
2、WizFi210實現HTTP請求的步驟
(1)設置WizFi210連接到一個可以登錄遠程HTTP服務器的AP並進入命令模式。
此時WizFi210需要運行在Station模式下,即AT+WM=0。可以有兩種方式連接AP後進入命令模式的方式,一種是AT+WA=SSID直接進入到命令模式;一種是自動連接進入數據透傳模式後鍵入“+++”進入命令模式。
(2)配置WizFi210的HTTP客戶端:AT+HTTPCONF= <Param>,<Value>。
參數 |
含義 |
參數值示例 |
2 |
HTTP授權的授權證書 | Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== |
3 |
表示是否需要持久連接。(HTTP 1.1默認進行持久連接) | Connection: close |
4 |
WEB服務器支持的返回內容壓縮編碼類型 | Content-Encoding: gzip |
5 |
響應體的長度 | Content-Length: 348 |
6 |
在整個返回體中本部分的字節位置 | Content-Range: bytes 21010-47021/47022 |
7 |
請求的與實體對應的MIME信息 | Content-Type: application/x-www-form-urlencoded |
8 |
請求發送的日期和時間 | Date: Tue, 15 Nov 2010 08:12:31 GMT |
9 |
響應過期的日期和時間 | Expires: Thu, 01 Dec 2010 16:00:00 GMT |
10 |
發出請求的用戶的Email | From: user@email.com |
11 |
指定請求的服務器的域名和端口號 | Host: www.zcmhi.com |
12 |
如果請求的部分在指定時間之後被修改則請求成功,未被修改則返回304代碼 | If-Modified-Since: Sat, 29 Oct 2010 19:43:31 GMT |
13 |
請求資源的最後修改時間 | Last-Modified: Tue, 15 Nov 2010 12:45:26 GMT |
14 |
用來重定向接收方到非請求URL的位置來完成請求或標識新的資源 | Location: http://www.zcmhi.com/archives/94.html |
15 |
包括實現特定的指令,它可應用到響應鏈上的任何接收方 | Pragma: no-cache |
16 |
隻請求實體的一部分,指定範圍 | Range: bytes=500-999 |
17 |
先前網頁的地址,當前請求網頁緊隨其後,即來路 | Referer: http://www.zcmhi.com/archives/71.html |
18 |
WEB軟件名稱 | Server: Apache/1.3.27 (Unix) (Red-Hat/Linux) |
19 |
文件傳輸編碼 | Transfer-Encoding:chunked |
20 |
User-Agent的內容包含發出請求的用戶信息 | User-Agent: Mozilla/5.0 (Linux; X11) |
21 |
表明客戶端請求實體應該使用的授權方案 | WWW-Authenticate: Basic |
23 |
獲取請求服務器地址 | http://www.abc.com?id=001 |
根據客戶端及服務器的不同,需要的參數和參數值不同,用戶可以通過WareShark等抓包工具獲取需要設置的參數值。
(3)WizFi210作為HTTP客戶端建立一個Socket的HTTP連接,然後連接到主機名稱或IP地址所指定的服務器上(由於HTTP建立在TCP連接之上,因此可以用抓包工具WareShark等得到TCP連接建立的三次握手的數據包),令為:AT+HTTPOPEN=<host>,<Port Number>,<SSL Flag>。<host>為主機名稱或IP地址;<Port Number>為HTTP服務器的監聽端口,一般默認為80,可以通過:開始→cmd→netstat –a –n→回車,查詢到HTTP服務器IP對應的端口號;<SSL Flag>為HTTPS標誌位,這裡用到HTTP,因此<SSL Flag>=0。例如:AT+HTTPOPEN= weibo.com,80,0。回复格式為:IP:xxx.xxx.xxx.xxx<cid>\r\n[OK]。IP即為HTTP服務器的IP地址,<cid>為Socket號。
(4)在HTTP連接上獲取(GET)/上傳(POST)HTTP數據
命令格式:AT+HTTPSEND=<cid>,<Type>,<Timeout>,<Page>,<Size of content>
緊接著,在Timeout時間之內輸入: <ESC> H<cid> <Contents> ,無需回車。
其中,<cid>為前面獲得的Socket號;<Type>為HTTP請求的方式:1為GET、3為POST;
<Timeout>為輸入HTTP數據的等待時間;<Page>為URL中的頁,HTTP的URL通常由HTTP:<host主機地址>[:<端口>]/<路徑,頁>;<參數>?<查詢>組成;<Size of content>為傳輸數據的大小;<ESC>為轉義字符,可以為“←”或者以16進制“1B 48 30”輸入;<Contents>為實際傳輸的用戶數據,例如:AT+HTTPSEND=0,1,10,/;AT+HTTPSEND=0,3,20,/。正確的回复格式為: [OK] \r\n ← H0xxxx200 OK\r\n{…}\r\n[DISCONNECT 0] \r\n\r\n[OK] ,HTTP連接隨之斷開。
3、WizFi210 HTTP 請求示例
下面以GET為例進行說明,POST只是將HTTPSEND的類型改為3,在此不做贅述。
AT+WD
[OK]
AT+WM=0
[OK]
AT+WWPA=12345678
[OK]
AT+NDHCP=1
[OK]
AT+WA=WIZnet
IP SubNet Gateway
192.168.1.120: 255.255.255.0: 192.168.1.1
[OK]
AT+HTTPCONF=20, Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)
[OK]
AT+HTTPCONF=5,150
[OK]
AT+HTTPCONF=7,application/x-www-form-urlencoded
[OK]
AT+HTTPCONF=11, weibo.com
[OK]
AT+HTTPOPEN= weibo.com,80,0
IP: 180.149.134.1410
[OK]
AT+HTTPSEND=0,1,10, /u/2097310012/home?wvr=5,150
[OK]
← H0xxxx200 OK
{…}
[DISCONNECT 0]
[OK]
感謝閱讀!