摘要:
在通過URL訪問HTTP SERVER的時候,通常會產生trace callback的異常,返回505的錯誤," VERSION IS NOT SUPPORTED ?" ,難道是客戶端協議版本和服務端不兼容,這個就不太可能了,究竟是什么原因。要從URL的字符編碼說起。
URL 字符編碼:
URL 只能使用ASCII字符集。
來通過因特網進行發送。由於 URL 常常會包含 ASCII 集合之外的字符,URL 必須轉換為有效的 ASCII 格式。
URL 編碼使用 "%" 其后跟隨兩位的十六進制數來替換非 ASCII 字符。
URL 不能包含空格。URL 編碼通常使用 + 來替換空格。
URL 編碼轉換:
各種SDK包都替換了都轉換的方法,我們采用python來說明:
比如:http://xx.xx.xx.xx/api?key1=magics &key2=深圳麥集思科技有限公司 &key3=人工智能
如何進行轉換呢,python 已經為我們准備好了庫函數,我們自己去調用就好了。
data = {'key1': 'magics ','key2'='深圳麥集思科技有限公司 ','key3'='人工智能'}
s=urlencode(data)
s的最終結果是什么呢?
key3=%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD&key2=%E6%B7%B1%E5%9C%B3%E9%BA%A6%E9%9B%86%E6%80%9D%E7%A7%91%E6%8A%80%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8++&key1=magics+
這個才是http協議中所需要的字符串