您好,登錄后才能下訂單哦!
這篇“Android中的OkHttp怎么使用”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來(lái)看看這篇“Android中的OkHttp怎么使用”文章吧。
Android 為我們提供了兩種HTTP交互的方式: HttpURLConnection 和 Apache HTTP Client,雖然兩者都支持HTTPS,流的上傳和下載,配置超時(shí),IPv6和連接池,已足夠滿足我們各種HTTP請(qǐng)求的需求。但更高效的使用HTTP 可以讓您的應(yīng)用運(yùn)行更快、更節(jié)省流量。而OkHttp庫(kù)就是為此而生。 OkHttp是一個(gè)高效的HTTP庫(kù): § 支持 SPDY(引用層協(xié)議) ,共享同一個(gè)Socket來(lái)處理同一個(gè)服務(wù)器的所有請(qǐng)求 § 如果SPDY不可用,則通過(guò)連接池來(lái)減少請(qǐng)求延時(shí) § 無(wú)縫的支持GZIP來(lái)減少數(shù)據(jù)流量 § 緩存響應(yīng)數(shù)據(jù)來(lái)減少重復(fù)的網(wǎng)絡(luò)請(qǐng)求 會(huì)從很多常用的連接問(wèn)題中自動(dòng)恢復(fù)。如果您的服務(wù)器配置了多個(gè)IP地址,當(dāng)?shù)谝粋€(gè)IP連接失敗的時(shí)候,OkHttp會(huì)自動(dòng)嘗試下一個(gè)IP。OkHttp還處理了代理服務(wù)器問(wèn)題和SSL握手失敗問(wèn)題。 使用 OkHttp 無(wú)需重寫您程序中的網(wǎng)絡(luò)代碼。OkHttp實(shí)現(xiàn)了幾乎和java.net.HttpURLConnection一樣的API。如果您用了 Apache HttpClient,則OkHttp也提供了一個(gè)對(duì)應(yīng)的okhttp-apache 模塊。 |
1、 Android studio中使用 在gradle中添加: compile 'com.squareup.okhttp:okhttp:2.7.0' 由于OkHttp依賴okio,所以還需要添加: 'com.squareup.okio:okio:1.6.0' 2、 Eclipse中使用: 只需要下載相應(yīng)的Jar包然后放入工程即可使用。 下載地址: http://square.github.io/okhttp/#download
|
1、 創(chuàng)建請(qǐng)求對(duì)象,請(qǐng)給請(qǐng)求設(shè)置參數(shù):使用了Request類的內(nèi)部Builder類。非常類似于我們以前學(xué)校的對(duì)話框、通知等的創(chuàng)建手法。 需要至少設(shè)置一個(gè)url參數(shù)。 Request request = new Request.Builder() .url("http://www.qq.com") .build(); 2、 創(chuàng)建OkHttp客戶端對(duì)象: OkHttpClient client = new OkHttpClient(); 3、 調(diào)用OkHttpClient對(duì)象的newCall方法,獲取Call對(duì)象。 Call call = client.newCall(request); 如果需要同步執(zhí)行網(wǎng)絡(luò)請(qǐng)求執(zhí)行4、5、6: 如果需要異步執(zhí)行網(wǎng)絡(luò)執(zhí)行4a:(Android推薦) ------------------------------------------------------------------------------------------------- 4、 調(diào)用call對(duì)象的execute方法,發(fā)出網(wǎng)絡(luò)請(qǐng)求,獲取Response對(duì)象。 Response response = call.execute(); //改方法會(huì)阻塞線程 5、 調(diào)用response的body方法方法獲取相應(yīng)體。 ResponseBody body = response.body(); 6、 調(diào)用ResponseBody的相應(yīng)方法獲取具體響應(yīng)內(nèi)容。 body.string(); //如果結(jié)果為字符類型,調(diào)用這個(gè)方法,默認(rèn)編碼utf-8 body.bytes(); //返回字節(jié)數(shù)組 body.byteStream(); //返回字節(jié)輸入流。 ------------------------------------------------------------------------------------------------ 4a、 調(diào)用call的enqueue(CallBack)方法,把請(qǐng)求法如請(qǐng)求隊(duì)列。 call.enqueue(new Callback() { //響應(yīng)失敗后的回調(diào) @Override public void onFailure(Request request, IOException e) {
} //響應(yīng)成功后的回調(diào) //注意這個(gè)方法的回調(diào)是在子線程中,所以如果要修改UI也必須使用其他手//段。 @Override public void onResponse(Response response) throws IOException {
} }); |
方法一:1、調(diào)用Request.builder 對(duì)象的get()方法來(lái)設(shè)置請(qǐng)求方法為”get”請(qǐng)求。 方法二:2、調(diào)用Request.builder 對(duì)象的method("GET", null)方法來(lái)設(shè)置請(qǐng)求方法為“get”請(qǐng)求。
注意:method中的第二個(gè)參數(shù)表示是請(qǐng)求體,因?yàn)間et請(qǐng)求的請(qǐng)求參數(shù)可以直接跟在url后面,所以中g(shù)et請(qǐng)求的時(shí)候可以傳遞null。 |
方法一:1、調(diào)用Request.builder 對(duì)象的post(requestBody)方法來(lái)設(shè)置請(qǐng)求方法為”get”請(qǐng)求。 方法二:2、調(diào)用Request.builder 對(duì)象的method("POST", requestBody)方法來(lái)設(shè)置請(qǐng)求方法為“get”請(qǐng)求。
注意: 1、 post的請(qǐng)求參數(shù)(請(qǐng)求體requestBody)必須有,不能為null。如果為null會(huì)拋異常。 2、 關(guān)于RequestBody: RequestBody是個(gè)抽象類。 a:使用RequestBody提交鍵值對(duì): RequestBody body = new FormEncodingBuilder() .add("name","zs") .add("pwd", "aaa") .build();
|
File file = new File(Environment.getExternalStorageDirectory(), "a.mp4"); //application/octet-stream 代表文件是二進(jìn)制類型(任何文件都可以) MediaType fileType = MediaType.parse("application/octet-stream"); RequestBody body = RequestBody.create(fileType, file); |
File file = new File(Environment.getExternalStorageDirectory(), "a.mp4"); Log.e("aaa", file+""); //application/octet-stream 代表文件是二進(jìn)制類型(任何文件都可以) MediaType fileType = MediaType.parse("application/octet-stream"); RequestBody body = RequestBody.create(fileType, file); //創(chuàng)建MultipartBuilder對(duì)象。 RequestBody body1 = new MultipartBuilder() .addFormDataPart("music", "good music") //普通表單數(shù)據(jù) .addFormDataPart("mp3", "apple.mp3", body) //文件 .build();
|
以上就是關(guān)于“Android中的OkHttp怎么使用”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。