漫遊HttpURLConnection

炸雞店老闆發表於2018-01-04

最近在看http相關的知識,記錄一下HttpURLConnection的體會

  1. 建立URL物件過程中,涉及到URLStreamHandler的檢測,getURLStreamHandler(protocol)實現
  2. URL用HashTable維護或者快取了protocol對應的Handler,懶載入模式,需要的時候並且HashTable中沒有,才會觸發Handler物件建立
  3. Handler物件建立,工廠模式,根據既定的規則(”sun.net.www.protocol” + “.” + protocol + “.Handler”),利用反射,建立Handler物件
  4. 呼叫openConnection,其實就是Handler去建立對應protocol 的URLConnection例項
  5. HttpURLConnection 其實是封裝了HttpClient,進行http通訊
  6. HttpClient繼承了NetworkClient,NetworkClient是jdk所有應用層通訊的基礎
  7. 經常設定的jvm引數,”sun.net.client.defaultReadTimeout”, “sun.net.client.defaultConnectTimeout” 就是在NetworkClient類載入時,決定jvm預設的net timeout配置

參考:

  1. 工廠:URLStreamHandlerFactory
  2. http:sun.net.www.protocol.http.HttpURLConnection
  3. client:sun.net.www.http.HttpClient
  4. sun.net.NetworkClient

相關文章