Android App開(kāi)發(fā)中HTTP擴(kuò)展包OkHttp的入門使用指南
Android 開(kāi)發(fā),不可避免的會(huì)用到網(wǎng)絡(luò)技術(shù),而多數(shù)情況下,我們都是使用 HTTP 協(xié)議來(lái)發(fā)送和接收網(wǎng)絡(luò)數(shù)據(jù)。Android 系統(tǒng)主要提供兩種方式來(lái)進(jìn)行 HTTP 通信,HttpURLConnection 和 HttpClient,但是從 Android 2.3 及以后版本中,Google 推薦使用 HttpURLConnection,究其原因,就是由于 HttpClient 的 API 數(shù)量過(guò)多,使得我們很難在不破壞兼容性的情況下對(duì)它進(jìn)行升級(jí)和擴(kuò)展,所以目前 Android 團(tuán)隊(duì)在提升和優(yōu)化 HttpClient 方面的工作態(tài)度并不積極。HttpURLConnection 是一種多用途、輕量極的 HTTP 客戶端,使用它來(lái)進(jìn)行 HTTP 操作可以適用于大多數(shù)的應(yīng)用程序。雖然 HttpURLConnection 的 API 提供的比較簡(jiǎn)單,但是同時(shí)這也使得我們可以更加容易地去使用和擴(kuò)展它。
但也正是因?yàn)檫@樣,HttpURLConnection 的使用還是比較復(fù)雜的,如果不進(jìn)行適當(dāng)封裝的話,很容易就會(huì)寫出不少重復(fù)代碼,于是乎,一些Android 網(wǎng)絡(luò)通信框架也就應(yīng)運(yùn)而生,今天要講的就是 OkHttp 開(kāi)源框架。
OkHttp 可以做很多事,包括上傳字符串、上傳文件、上傳流、上傳表格參數(shù)、上傳多部分的請(qǐng)求、響應(yīng) Json、響應(yīng)緩存等。目前主要流行 Json 數(shù)據(jù)通信,所以我們就來(lái)講講基于 Json 通信的 GET 和 POST 請(qǐng)求與響應(yīng)。
環(huán)境準(zhǔn)備
介紹了這么多理論知識(shí),接下來(lái)就進(jìn)入實(shí)戰(zhàn)階段了,首先下載 OkHttp 的 jar 包,可以去 GitHub 下載最近的包。
這是最新下載地址:https://search.maven.org/remote_content?g=com.squareup.okhttp3&a=okhttp&v=LATEST
當(dāng)然,你也可以在項(xiàng)目中直接添加編譯(用于 Android Studio):compile 'com.squareup.okhttp3:okhttp:3.2.0'
OkHttp 的項(xiàng)目地址:https://github.com/square/okhttp
除此之外,還需要添加一個(gè) OkHttp 的依賴包:okio.jar,下載地址:https://search.maven.org/remote_content?g=com.squareup.okio&a=okio&v=LATEST
項(xiàng)目地址:https://github.com/square/okio
編譯地址:compile 'com.squareup.okio:okio:1.6.0'
例子
1.請(qǐng)求一個(gè)URL
這里例子請(qǐng)求一個(gè)URL,并以字符串的格式打印內(nèi)容,主要代碼:
OkHttpClient client = new OkHttpClient();
String run(String url) throws IOException {
Request request = new Request.Builder()
.url(url)
.build();
Response response = client.newCall(request).execute();
return response.body().string();
}
2.向服務(wù)器POST請(qǐng)求
向服務(wù)器發(fā)送POST請(qǐng)求,主要代碼:
public static final MediaType JSON
= MediaType.parse("application/json; charset=utf-8");
OkHttpClient client = new OkHttpClient();
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();
}
- Android第三方HTTP網(wǎng)絡(luò)支持包OkHttp的基礎(chǔ)使用教程
- Android使用okHttp(get方式)下載圖片
- 詳解Android中使用OkHttp發(fā)送HTTP的post請(qǐng)求的方法
- Android中Retrofit+OkHttp進(jìn)行HTTP網(wǎng)絡(luò)編程的使用指南
- Android M(6.x)使用OkHttp包解析和發(fā)送JSON請(qǐng)求的教程
- 使用Android的OkHttp包實(shí)現(xiàn)基于HTTP協(xié)議的文件上傳下載
- Android的HTTP擴(kuò)展包OkHttp中的緩存功能使用方法解析
- Android中使用OkHttp包處理HTTP的get和post請(qǐng)求的方法
- Android中的Retrofit+OkHttp+RxJava緩存架構(gòu)使用
- android okhttp的基礎(chǔ)使用【入門推薦】
相關(guān)文章
Android RecyclerView添加搜索過(guò)濾器的示例代碼
本篇文章主要介紹了Android RecyclerView添加搜索過(guò)濾器的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-01-01
Android實(shí)現(xiàn)仿慕課網(wǎng)下拉加載動(dòng)畫
這篇文章是我在做動(dòng)畫的項(xiàng)目中整理出來(lái)的,在eoe看了篇帖子,然后仿慕課網(wǎng)做了一個(gè)下拉加載動(dòng)畫。此功能實(shí)現(xiàn)方法是AnimationDrawable類進(jìn)行 Animation-list中item的循環(huán)遍歷圖片,類似于flash里的幀幀動(dòng)畫,需要的朋友可以參考下2015-07-07
Android基于TextView屬性android:ellipsize實(shí)現(xiàn)跑馬燈效果的方法
這篇文章主要介紹了Android基于TextView屬性android:ellipsize實(shí)現(xiàn)跑馬燈效果的方法,涉及Android跑馬燈效果所涉及的TextView相關(guān)屬性與使用方法,需要的朋友可以參考下2016-08-08
Android使用ViewBinding的詳細(xì)步驟(Kotlin簡(jiǎn)易版)
最近這段時(shí)間在學(xué)習(xí)Kotlin,突然發(fā)現(xiàn)谷歌已經(jīng)把kotlin-android-extensions插件廢棄,目前推薦使用ViewBinding來(lái)進(jìn)行替代,接下來(lái)通過(guò)本文給大家分享Android使用ViewBinding的詳細(xì)步驟,感興趣的朋友一起學(xué)習(xí)吧2021-05-05
Android開(kāi)發(fā)中l(wèi)ibs和jinLibs文件夾的作用詳解
這篇文章主要給大家介紹了關(guān)于Android開(kāi)發(fā)中l(wèi)ibs和jinLibs文件夾的作用的相關(guān)資料,文中通過(guò)圖文及示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-09-09
Android用MVP實(shí)現(xiàn)一個(gè)簡(jiǎn)單的類淘寶訂單頁(yè)面的示例
本篇文章主要介紹了Android用MVP實(shí)現(xiàn)一個(gè)簡(jiǎn)單的類淘寶訂單頁(yè)面的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11
Android拍照保存在系統(tǒng)相冊(cè)不顯示的問(wèn)題解決方法
我們保存相冊(cè)到Android手機(jī)的時(shí)候,然后去打開(kāi)系統(tǒng)圖庫(kù)找不到我們想要的那張圖片,那是因?yàn)槲覀儾迦氲膱D片還沒(méi)有更新的緣故,下面與大家分享下此問(wèn)題的解決方法2013-06-06

