日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【OkHttp】OkHttp 源码分析 ( 网络框架封装 | OkHttp 4 迁移 | OkHttp 建造者模式 )

發布時間:2025/6/17 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【OkHttp】OkHttp 源码分析 ( 网络框架封装 | OkHttp 4 迁移 | OkHttp 建造者模式 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

OkHttp 系列文章目錄

【OkHttp】OkHttp 簡介 ( OkHttp 框架特性 | Http 版本簡介 )
【OkHttp】Android 項目導入 OkHttp ( 配置依賴 | 配置 networkSecurityConfig | 配置 ViewBinding | 代碼示例 )
【OkHttp】OkHttp Get 和 Post 請求 ( 同步 Get 請求 | 異步 Get 請求 | 同步 Post 請求 | 異步 Post 請求 )
【OkHttp】OkHttp 上傳圖片 ( 獲取 SD 卡動態權限 | 跳轉到相冊界面選擇圖片 | 使用 OkHttp 上傳圖片文件 )

【OkHttp】OkHttp 源碼分析 ( 網絡框架封裝 | OkHttp 4 遷移 | OkHttp 建造者模式 )


文章目錄

  • OkHttp 系列文章目錄
  • 一、網絡框架封裝
  • 二、OkHttp 4 遷移
  • 三、OkHttp 建造者模式
  • 四、博客資源





一、網絡框架封裝



HttpURLConnection 是 Android 中原生的 Http 網絡請求 API , 在 SDK 中提供 , 是 Google 官方提供的 Http 網絡框架 , 使用起來很繁瑣 ;


Http 網絡框架的作用是封裝 Http 請求 ( Request ) 和 響應 ( Response ) ;

Request 請求封裝 : 中封裝 請求頭 , 參數 , 將下面的參數封裝到 Request 請求中 ;

GET / HTTP/1.1 Host: rucfd.ruc.edu.cn Connection: keep-alive Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 If-None-Match: "b7f-5b575595fe630-gzip" If-Modified-Since: Wed, 02 Dec 2020 06:28:18 GMT

Response 響應封裝 : 將 響應頭 以及各種響應參數 封裝到 Request 響應中 ;

HTTP/1.1 200 OK Server: none Date: Mon, 21 Jun 2021 05:15:56 GMT Content-Type: text/html Content-Length: 1104 Connection: keep-alive Last-Modified: Wed, 02 Dec 2020 06:28:18 GMT ETag: "b7f-5b575595fe630-gzip" Accept-Ranges: bytes Vary: Accept-Encoding Content-Encoding: gzip

OkHttp 網絡框架就實現了上述封裝 , 并且用法更加





二、OkHttp 4 遷移



OkHttp3 使用 Java 實現 , OkHttp4 使用 Kotlin 實現 ;

如果遷移到 OkHttp4 , 原則上不會出現錯誤 , 二者肯定是兼容的 , 原有代碼不用進行修改 ;

還是有一些需要進行兼容的地方 , 參考如下頁面 ;

https://square.github.io/okhttp/upgrading_to_okhttp_4/





三、OkHttp 建造者模式



使用 OkHttp 創建 Request 請求對象時 , 使用到了 " 建造者模式 " ;

Request request = new Request.Builder().url("https://www.baidu.com") // 設置請求地址.get() // 使用 Get 方法.build();

Request 中需要設置很多成員變量需要初始化 , 大部分參數都不是必須的 , 在構造函數中不可能設置十幾個甚至幾十個參數 ;
因此這里使用 " 建造者設計模式 " , 可以根據自己的需求 , 為類設置一個 " 建造者 " Builder , 用戶通過該 Builder 對象根據需求配置不同的參數 ;

在 new Request.Builder() 建造者的構造函數中 , 對 Request 進行了默認初始化操作 ;


Request.Builder 代碼示例 :

public static class Builder {@Nullable HttpUrl url;String method;Headers.Builder headers;@Nullable RequestBody body;/** A mutable map of tags, or an immutable empty map if we don't have any. */Map<Class<?>, Object> tags = Collections.emptyMap();public Builder() {this.method = "GET";this.headers = new Headers.Builder();}Builder(Request request) {this.url = request.url;this.method = request.method;this.body = request.body;this.tags = request.tags.isEmpty()? Collections.emptyMap(): new LinkedHashMap<>(request.tags);this.headers = request.headers.newBuilder();}public Builder url(HttpUrl url) {if (url == null) throw new NullPointerException("url == null");this.url = url;return this;}}



四、博客資源



GitHub : https://github.com/han1202012/OkHttp

總結

以上是生活随笔為你收集整理的【OkHttp】OkHttp 源码分析 ( 网络框架封装 | OkHttp 4 迁移 | OkHttp 建造者模式 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。