androidhttp編碼
Ⅰ Android HTTP Post請求錯誤400
你確定你的post方法調用的url沒問題嗎?參數的名稱和個數也沒問題嗎?
Ⅱ android中怎麼創建一個表格
效果圖:
5、 單擊該項目,執行。便得到以上效果!
Ⅲ Android性能優化之網路優化DNS和HttpDNS知識詳解
前言小計
本文已在在公眾號【Android開發編程】發表
一、什麼是DNS
二、DNS域名結構
1、DNS域名命名
2、域名的分級
域名可以劃分為各個子域,子域還可以繼續劃分為子域的子域,這樣就形成了頂級域名、二級域名、三級域名等
頂級域名可以分為三大類:
國家頂級域名:cn、us、uk等
通用域名:常見的有7個,com、net、org、e、int、gov、mil
方向域名: arpa,用於將ip地址轉為域名
域名伺服器
域名伺服器按照由高到低進行層次劃分:
注意: 一個域名伺服器所負責的范圍,稱為區
三、域名解析過程
域名解析的重要兩點:
以上兩點是域名解析的重要兩步。但是這並不是解析ip地址的完整過程,如果瀏覽器的緩存中有該域名對應的ip地址,就不需要向本地域名伺服器請求了等等。下面來看詳細過程:
例如要解析:www.example.com該域名的ip地址;
四、DNS安全和優化
1、dns安全問題
2、DNS優化
DNS解析是一個漫長的過程,那麼它的優化有哪些?
1、網頁端
用戶在請求請求某個鏈接之前,瀏覽器先嘗試解析該鏈接的域名再將其進行緩存。
可以這樣做:
(1) 在伺服器中響應設置X-DNS-Prefetch-Control的值為on啟動預解析
(2) 在HTML中,
(3) 在head中加入link標簽:
如
不過現在的Chrome瀏覽器會自動將當前頁面的所有帶href的dns都prefetch一遍。需要手動添加上面的link標簽的場景是:你後面訪問的域名不在當前頁面的所有鏈接中;
正確使用link標簽的姿勢:
域名收斂:建議將靜態資源只放在一個域名下面,可以減少DNS的請求
2、客戶端
HttpDNS
HttpDNS是使用HTTP協議向阿里雲的HTTPDNS伺服器的80埠直接進行請求,代替傳統的DNS協議向LDNS伺服器的53埠進行請求。從而可以繞過LDNS,可以避免運行商的域名劫持和調度不精準的問題;
五、HttpDNS介紹
總結:
網路優化的知識點很多,今天主要介紹了dns的知識點
下次繼續介紹Android網路優化的具體實現方案
Ⅳ Android面試筆記——HTTP/HTTPS
HTTP和HTTPS是面試常問的問題,內容比較多而且復雜,HTTPS裡面的細節很多,本文只是把主要的東西寫出來,想要弄懂HTTPS還是要多看幾篇博文,自己動手走一遍把各個攻擊的case搞明白。
HTTP 是超⽂本傳輸協議,也就是HyperText Transfer Protocol。
Host 欄位 :客戶端發送請求時,⽤來指定伺服器的域名。 Host: www..com
Content-Length 欄位 :伺服器在返回數據時,會有 Content-Length 欄位,表明本次回應的數據長度。 Content-Length: 1000
Connection 欄位 :Connection 欄位最常用於客戶端要求伺服器使⽤ TCP 持久連接,以便其他請求復⽤。 HTTP/1.1 版本的默認連接都是持久連接,但為了兼容⽼版本的 HTTP,需要指定 Connection ⾸部欄位的值為Keep-Alive 。
Content-Type 欄位 :Content-Type 欄位⽤於伺服器回應時,告訴客戶端,本次數據是什麼格式 。 Content-Type: text/html; charset=utf-8
Content-Encoding 欄位 :Content-Encoding 欄位說明數據的壓縮⽅法。表示伺服器返回的數據使用了什麼壓縮格式 。客戶端在請求時,⽤ Accept-Encoding 欄位說明自己可以接受哪些壓縮⽅法。 Accept-Encoding: gzip, deflate
下圖為訪問網路的返回欄位
HTTP/2 協議是基於 HTTPS 的,所以 HTTP/2 的安全性也是有保障的。
這都是基於 TCP 傳輸層的問題,所以 HTTP/3 把 HTTP 下層的 TCP 協議改成了 UDP 。
UDP 發生是不管順序,也不管丟包的,所以不會出現 HTTP/1.1 的隊頭阻塞 和 HTTP/2 的⼀個丟包全部重傳問題。
UDP 是不可靠傳輸的,但基於 UDP 的 QUIC 協議 可以實現類似 TCP 的可靠性傳輸。
HTTPS 采⽤的是 對稱加密和⾮對稱加密結合 的「混合加密」⽅式:
采⽤「混合加密」的⽅式的原因:
摘要演算法⽤來實現 完整性 ,能夠為數據⽣成獨⼀⽆⼆的「指紋」,⽤於校驗數據的完整性,解決了篡改的⻛險。
客戶端在發送明⽂之前會通過摘要演算法算出明文的「指紋」,發送的時候把「指紋 + 明文」⼀同加密成密文後,發送給伺服器,伺服器解密後,用相同的摘要演算法算出發送過來的明文,通過⽐較客戶端攜帶的「指紋」和當前算出的「指紋」做⽐較,若「指紋」相同,說明數據是完整的。
客戶端先向伺服器端索要公鑰,然後⽤公鑰加密信息,伺服器收到密文後,⽤⾃⼰的私鑰解密。這就存在些問題,如何保證公鑰不被篡改和信任度?
所以這⾥就需要藉助第三⽅權威機構 CA (數字證書認證機構),將伺服器公鑰放在數字證書(由數字證書認證機構頒發)中,只要證書是可信的,公鑰就是可信的。
通過數字證書的⽅式保證伺服器公鑰的身份,解決冒充的⻛險 。
證書簽名和驗證過程 :
兩種情況 :
Ⅳ android9.0以上http請求失敗的解決方法
在android9.0以上由於安全性高了,所有不做處理http不能使用,有3中解決方法
1.最簡單的方法降級targetSdkVersion的版本
將 targetSdkVersion 將到27或27以下
2.伺服器請求http改為https (推薦)
推薦使用這個方法,畢竟https的安全行高
3.兼容http請求
(1):在清單文件中設置networkSecurityConfig屬性
(2)在res/xml文件夾下創建network_security_config.xml