深入瞭解OKHttp(一:原生OKHttp的基本使用)
1.1_簡介
OKHttp是一款高效的HTTP客戶端,支援連線同一地址的連結共享同一個socket,通過連線池來減小響應延遲,還有透明的GZIP壓縮,請求快取等優勢,其核心主要有路由、連線協議、攔截器、代理、安全性認證、連線池以及網路適配,攔截器主要是指新增,移除或者轉換請求或者回應的頭部資訊
這個庫也是square開源的一個網路請求庫(okhttp內部依賴okio)。現在已被Google使用在Android原始碼上了,可見其強大。
關於網路請求庫,現在應該還有很多人在使用android-async-http。他內部使用的是HttpClient,但是Google在6.0版本里面刪除了HttpClient相關API,可見這個庫現在有點過時了。
1.2_下載地址
1.3_OKHttp主要功能
1、聯網請求文字資料
2、大檔案下載
3、大檔案上傳
4、請求圖片
2_原生OKHttp的Get和Post請求小案例
UI執行緒接受顯示請求資料private OkHttpClient client = new OkHttpClient(); private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case GET: //獲取資料 tv_result.setText((String) msg.obj); break; case POST: //獲取資料 tv_result.setText((String) msg.obj); break; } } };
get與post 非同步請求資料
/** * 使用get請求網路資料 */ private void getDataFromGet() { new Thread() { @Override public void run() { super.run(); try { String result = get("http://api.m.mtime.cn/PageSubArea/TrailerList.api"); Log.e("TAG", result); Message msg = Message.obtain(); msg.what = GET; msg.obj = result; handler.sendMessage(msg); } catch (IOException e) { e.printStackTrace(); } } }.start(); } /** * 使用post請求網路資料 */ private void getDataFromPost() { new Thread() { @Override public void run() { super.run(); try { String result = post("http://api.m.mtime.cn/PageSubArea/TrailerList.api", ""); Log.e("TAG", result); Message msg = Message.obtain(); msg.what = POST; msg.obj = result; handler.sendMessage(msg); } catch (IOException e) { e.printStackTrace(); } } }.start(); } /** * get請求 * * @param url 網路連線 * @return * @throws IOException */ private String get(String url) throws IOException { Request request = new Request.Builder() .url(url) .build(); Response response = client.newCall(request).execute(); return response.body().string(); } /** * okhttp3的post請求 * * @param url * @param json * @return * @throws IOException */ private String post(String url, String json) throws IOException { RequestBody body = RequestBody.create(JSON, json); Request request = new Request.Builder() .url(url) .post(body) .build(); Response response = client.newCall(request).execute(); return response.body().string(); }
相關推薦
深入瞭解OKHttp(一:原生OKHttp的基本使用)
1.1_簡介 OKHttp是一款高效的HTTP客戶端,支援連線同一地址的連結共享同一個socket,通過連線池來減小響應延遲,還有透明的GZIP壓縮,請求快取等優勢,其核心主要有路由、連線協議、攔截器、代理、安全性認證、連線池以及網路適配,攔截器主要是指新增,移除或者轉換請求
深入瞭解Linux(一)
Linux的各個資料夾 每次當我使用linux的時候我都被一個個資料夾整懵逼,那麼多資料夾到底是怎麼分類的呢。今天終於有時間好好整理一下 /boot: 引導檔案存放目錄,核心檔案(vmlinuz),引導載入器(bootloader grub)都存放在這個目錄 /bin: 供所有使用者使用的基本命令
深入理解jvm(一、ubuntu16編譯openjdk8)
1.安裝Bootstrap JDK 直接執行命令: sudo apt-get install openjdk-7-jre sudo apt-get install openjdk-7-jdk 如果出現“沒有可用的軟體包 openjdk-7-jdk,但是它被其它的軟體包引用了。這可能意味著
深入理解overlayfs(一):初識
Overlayfs是一種類似aufs的一種堆疊檔案系統,於2014年正式合入Linux-3.18主線核心,目前其功能已經基本穩定(雖然還存在一些特性尚未實現)且被逐漸推廣,特別在容器技術中更是勢頭難擋。本系列博文將首先介紹overlayfs的基本概念和應用場景,然後通過若干例項描述它的使用方式,
深入理解Android(一):Gradle詳解
作者 鄧凡平 編者按:隨著移動裝置硬體能力的提升,Android系統開放的特質開始顯現,各種開發的奇技淫巧、黑科技不斷湧現,InfoQ特聯合《深入理解Android》系列圖書作者鄧凡平,開設深入理解Android專欄,探索Android從框架到應用開
根據Interceptor 分析 OkHttp(一)
在介紹Interceptor前需要理解幾個概念 Requests 每個HTTP請求都包含一個URL,一個method(比如GET/POST),還有一系列的headers。Requests 還可能包含一個body:一個指定conten
深入瞭解資料校驗:Bean Validation 2.0(JSR380)
每篇一句 > 吾皇一日不退役,爾等都是臣子 對Spring感興趣可掃碼加入wx群:`Java高工、架構師3群`(文末有二維碼) 前言 前幾篇文章在講Spring的資料繫結的時候,多次提到過資料校驗。可能有人認為資料校驗模組並不是那麼的重要,因為硬編碼都可以做。若是這麼想的話,那就大錯特錯了~ 前面講解
深入瞭解資料校驗:Java Bean Validation 2.0(JSR380)
每篇一句 吾皇一日不退役,爾等都是臣子 相關閱讀 【小家Java】深入瞭解資料校驗(Bean Validation):基礎類打點(ValidationProvider、ConstraintDescriptor、ConstraintValidator) 對Spring感興趣可掃碼加入wx群:`Java高工
安卓JNI精細化講解,讓你徹底瞭解JNI(一):環境搭建與HelloWord
目錄 1、基礎概念 ├──1.1、JNI ├──1.2、NDK ├──1.3、CMake與ndk-build 2、環境搭建 3、Native C++ 專案(HelloWord案例) ├── 3.1、專案建立(java、kotlin) ├── 3.2、CMake的應用(詳細講解) ├── 3.3、ndk-bui
深入理解python(一)python語法總結:基礎知識和對python中物件的理解
用python也用了兩年了,趁這次疫情想好好整理下。 大概想法是先對python一些知識點進行總結,之後就是根據python核心原始碼來對python的實現方式進行學習,不會閱讀整個原始碼,,,但是應該會把資料結構的實現、函式呼叫過程、以及python虛擬機器的基本原理根據原始碼解釋下。 當然限於筆者只是一個
使用SLF4J和LOGBACK (一 : 基本使用)
asi 個人 fig 接口實現 pac 再次 intro 級別 多說 1.SLF4J是什麽? slf4j是一個日誌門面,它不是具體的日誌實現框架,而是提供了通用的日誌接口,按個人理解來說,是通過接口實現多態,來滿足應用在不同日誌框架間切換的需求。 例如在程序中我們需要記錄
深入理解JavaScript(一)
odi 可能 方式 == tin mini 單詞 包括 fun 編寫高質量 JavaScript 代碼的基本要點 轉載:http://wiki.jikexueyuan.com/project/javascript-depth-understanding/start-jav
字符驅動之按鍵(一:無腦輪詢法)
des gpo first gist 結構體 字符 定義 char v_op 一、添加頭文件 二、構造fileoperation結構體 static struct fileoperations second_drv_fops = { .o
node總結之全域性物件瞭解下(一)
JavaScript 中有一個特殊的物件,稱為全域性物件(Global Object),它及其所有屬性都可以在程式的任何地方訪問,這就是全域性變數,在瀏覽器 JavaScript 中,通常 window 是全域性物件, 然而 Node.js 中的全域性物件是 global,所有全域性變數(除了
簡單直播實現(一:建立本地rtmp伺服器)Mac上搭建直播伺服器Nginx+rtmp
簡介 nginx是非常優秀的開源伺服器,用它來做hls或者rtmp流媒體伺服器是非常不錯的選擇,本人在網上整理了安裝流程,分享給大家並且作備忘。 步驟安裝 1、安裝Homebrow Homebrew簡稱brew,是Mac OSX上的軟體包管理工具,能在Mac中方便的安裝軟體
想高效開發小程式,mpvue瞭解下(一)
序言 小程式一定是今年熱門話題之一,對於我們開發者來講,開發小程式也是屬於我們的技能之一了。從去年我也玩過小程式,但當時處於內測的階段,各種反人類的設計都有,連es6都不支援,只能說瞎折騰了。到了如今,小程式迎來春天,友好度提高了不少,wepy、taro與mpvue的出現也帶來更高的開發
Elasticsearch入門一:Elasticsearch的基本概念(譯)
一.Elasticsearch定義 Elasticsearch是一個開源的高度可擴充套件的全文搜尋和分析引擎。它允許您快速、實時的儲存、搜尋和分析大資料。它通常為具有複雜的搜尋特性和需求的應用提供底層引擎或技術。 Elasticsearch可以用於以下的一些場景: 運營一個網上商城
Android 如何從應用深入到Framework (一)
今天,明哥想跟大家聊聊,如何從應用開發,轉向Framework開發。 系統應用開發,現在來說,已經開始脫離系統,單獨拿出來開發,系統定製介面,已提供給應用呼叫,用來增強功能。 原生的桌面,撥號,設定,已經沒法做出差異化優勢,因此都費盡心機,來進行應用深度開發。 對於之前
《Java8實戰》-第十一章筆記(CompletableFuture:組合式非同步程式設計)
CompletableFuture:組合式非同步程式設計 最近這些年,兩種趨勢不斷地推動我們反思我們設計軟體的方式。第一種趨勢和應用執行的硬體平臺相關,第二種趨勢與應用程式的架構相關,尤其是它們之間如何互動。我們在第7章中已經討論過硬體平臺的影響。我們注意到隨著多核處理器的出現,提升應用程式處理速度最有效的
js將一串隨機數字每四位加一個自定義符號(格式:1234-5678-90)
方法一: let string = '1234567890',result = '', index = 0; for(let i=0; i<string.length; i++){ result +=