今天回覆網友關於 Arduino 傳送資料給 ThingSpeak 等物聯網伺服器遇到的問題時, 突然想起來 URL 字串中好像不能直接傳送一些特殊字元例如 %, 否則所傳送的網址將斷在特殊字元處而不完整, 例如傳送百分比資訊時 :
action?temperature=25.3&humidity=78%&pressure=120.3
伺服器將收到如下 request 字串 :
action?temperature=25.3&humidity=78
亦即 % 之後的資訊都收不到.
一時忘記我記錄在哪兒, 查詢 blogger 終於找到了, 是在下面這兩篇的 Q&A 中, 為了便於搜尋, 我特地記錄下來 :
# 利用網頁控制 Arduino (二)
# 使用 ESP8266 傳送 Twitter 訊息
URL 字串中 % 字元有特殊用途 (表示編碼), 要傳送 '%' 字元本身要改用 '%25', 而跳行則要改用 '%0d%0a'. 參考 :
# http://www.convertstring.com/zh_TW/EncodeDecode/UrlEncode
# https://openhome.cc/Gossip/Encoding/URLEncoding.html
"在URI的規範中定義了一些保留字元(Reserved character),像是「:」、「/」、「?」、「&」、「=」、「@」、「%」等字元,在URI中都有它的作用,如果你要在請求參數上表達URI中的保留字元,必須在%字元之後以十六進位數值表示方式,來表示該字元的八個位元數值。"
沒有留言:
張貼留言