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

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

Android中OkHttp如何使用-創(chuàng)新互聯(lián)

Android中OkHttp如何使用,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

成都創(chuàng)新互聯(lián)是一家專注網(wǎng)站建設(shè)、網(wǎng)絡(luò)營(yíng)銷策劃、微信小程序開(kāi)發(fā)、電子商務(wù)建設(shè)、網(wǎng)絡(luò)推廣、移動(dòng)互聯(lián)開(kāi)發(fā)、研究、服務(wù)為一體的技術(shù)型公司。公司成立十年以來(lái),已經(jīng)為1000多家房屋鑒定各業(yè)的企業(yè)公司提供互聯(lián)網(wǎng)服務(wù)?,F(xiàn)在,服務(wù)的1000多家客戶與我們一路同行,見(jiàn)證我們的成長(zhǎng);未來(lái),我們一起分享成功的喜悅。

一、     OkHttp特點(diǎn)

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ú)需重寫(xiě)您程序中的網(wǎng)絡(luò)代碼。OkHttp實(shí)現(xiàn)了幾乎和java.net.HttpURLConnection一樣的API。如果您用了 Apache HttpClient,則OkHttp也提供了一個(gè)對(duì)應(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包然后放入工程即可使用。

下載地址:

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 {

              }

          });

四、     Get請(qǐng)求

方法一: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。

五、     Post請(qǐng)求

方法一: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();

六、     OkHttp文件上傳

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);

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

       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();

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


當(dāng)前標(biāo)題:Android中OkHttp如何使用-創(chuàng)新互聯(lián)
文章源于:http://weahome.cn/article/eeocd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部