真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Android中的OkHttp怎么使用-創(chuàng)新互聯(lián)

這篇“Android中的OkHttp怎么使用”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Android中的OkHttp怎么使用”文章吧。

創(chuàng)新互聯(lián)是一家朝氣蓬勃的網(wǎng)站建設(shè)公司。公司專注于為企業(yè)提供信息化建設(shè)解決方案。從事網(wǎng)站開發(fā),網(wǎng)站制作,網(wǎng)站設(shè)計,網(wǎng)站模板,微信公眾號開發(fā),軟件開發(fā),微信小程序,十多年建站對成都加固等多個行業(yè),擁有豐富的網(wǎng)站運維經(jīng)驗。

一、     OkHttp特點

Android 為我們提供了兩種HTTP交互的方式: HttpURLConnection 和 Apache HTTP Client,雖然兩者都支持HTTPS,流的上傳和下載,配置超時,IPv6和連接池,已足夠滿足我們各種HTTP請求的需求。但更高效的使用HTTP 可以讓您的應(yīng)用運行更快、更節(jié)省流量。而OkHttp庫就是為此而生。

OkHttp是一個高效的HTTP庫:

§  支持  SPDY(引用層協(xié)議) ,共享同一個Socket來處理同一個服務(wù)器的所有請求

§  如果SPDY不可用,則通過連接池來減少請求延時

§  無縫的支持GZIP來減少數(shù)據(jù)流量

§  緩存響應(yīng)數(shù)據(jù)來減少重復(fù)的網(wǎng)絡(luò)請求

會從很多常用的連接問題中自動恢復(fù)。如果您的服務(wù)器配置了多個IP地址,當(dāng)?shù)谝粋€IP連接失敗的時候,OkHttp會自動嘗試下一個IP。OkHttp還處理了代理服務(wù)器問題和SSL握手失敗問題。

使用 OkHttp 無需重寫您程序中的網(wǎng)絡(luò)代碼。OkHttp實現(xiàn)了幾乎和java.net.HttpURLConnection一樣的API。如果您用了 Apache HttpClient,則OkHttp也提供了一個對應(yīng)的okhttp-apache 模塊。

二、     如何導(dǎo)入OkHttp

      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包然后放入工程即可使用。

      下載地址:

      /tupian/20230522/ id="yisu3h-to49">三、     如何使用

      1、          創(chuàng)建請求對象,請給請求設(shè)置參數(shù):使用了Request類的內(nèi)部Builder類。非常類似于我們以前學(xué)校的對話框、通知等的創(chuàng)建手法。  需要至少設(shè)置一個url參數(shù)。

      Request request = new Request.Builder()

                       .url("http://www.qq.com")

                      .build();

      2、          創(chuàng)建OkHttp客戶端對象:

      OkHttpClient client = new OkHttpClient();

      3、          調(diào)用OkHttpClient對象的newCall方法,獲取Call對象。

      Call call = client.newCall(request);

      如果需要同步執(zhí)行網(wǎng)絡(luò)請求執(zhí)行4、5、6:

      如果需要異步執(zhí)行網(wǎng)絡(luò)執(zhí)行4a:(Android推薦)

      -------------------------------------------------------------------------------------------------

      4、          調(diào)用call對象的execute方法,發(fā)出網(wǎng)絡(luò)請求,獲取Response對象。

      Response response = call.execute(); //改方法會阻塞線程

      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)用這個方法,默認(rèn)編碼utf-8

      body.bytes();  //返回字節(jié)數(shù)組

      body.byteStream();   //返回字節(jié)輸入流。

      ------------------------------------------------------------------------------------------------

      4a、    調(diào)用call的enqueue(CallBack)方法,把請求法如請求隊列。

                call.enqueue(new  Callback() {

                     //響應(yīng)失敗后的回調(diào)

                     @Override

                     public void onFailure(Request request,  IOException e) {

               

                     }

                     //響應(yīng)成功后的回調(diào)

                    //注意這個方法的回調(diào)是在子線程中,所以如果要修改UI也必須使用其他手//段。

                     @Override

                     public void onResponse(Response response)  throws IOException {

                     }

                 });

      四、     Get請求

      方法一:1、調(diào)用Request.builder  對象的get()方法來設(shè)置請求方法為”get”請求。

      方法二:2、調(diào)用Request.builder  對象的method("GET", null)方法來設(shè)置請求方法為“get”請求。

      注意:method中的第二個參數(shù)表示是請求體,因為get請求的請求參數(shù)可以直接跟在url后面,所以中g(shù)et請求的時候可以傳遞null。

      五、     Post請求

      方法一:1、調(diào)用Request.builder  對象的post(requestBody)方法來設(shè)置請求方法為”get”請求。

      方法二:2、調(diào)用Request.builder  對象的method("POST", requestBody)方法來設(shè)置請求方法為“get”請求。

      注意:

      1、          post的請求參數(shù)(請求體requestBody)必須有,不能為null。如果為null會拋異常。

      2、          關(guān)于RequestBody:

      RequestBody是個抽象類。

      a:使用RequestBody提交鍵值對

              RequestBody body = new FormEncodingBuilder()

                       .add("name","zs")

                      .add("pwd",  "aaa")

                      .build();

      六、     OkHttp文件上傳

      File file = new File(Environment.getExternalStorageDirectory(),  "a.mp4");

      //application/octet-stream 代表文件是二進制類型(任何文件都可以)

      MediaType fileType =  MediaType.parse("application/octet-stream");

      RequestBody body = RequestBody.create(fileType, file);

      七、     OkHttp同時上傳文件和表單數(shù)據(jù)

              File file = new  File(Environment.getExternalStorageDirectory(), "a.mp4");

               Log.e("aaa", file+"");

               //application/octet-stream 代表文件是二進制類型(任何文件都可以)

              MediaType fileType =  MediaType.parse("application/octet-stream");

              RequestBody body =  RequestBody.create(fileType, file);

              //創(chuàng)建MultipartBuilder對象。

              RequestBody body1 =  new MultipartBuilder()

                       .addFormDataPart("music", "good music")  //普通表單數(shù)據(jù)

                       .addFormDataPart("mp3", "apple.mp3", body)  //文件

                      .build();

      以上就是關(guān)于“Android中的OkHttp怎么使用”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


      網(wǎng)頁題目:Android中的OkHttp怎么使用-創(chuàng)新互聯(lián)
      標(biāo)題網(wǎng)址:http://weahome.cn/article/dgijpi.html

      在線咨詢

      微信咨詢

      電話咨詢

      028-86922220(工作日)

      18980820575(7×24)

      提交需求

      返回頂部