安裝在使用OkHttp前,我們需要先導(dǎo)入OkHttp的第三方庫。 我們可以在Github上找到她的項目地址: https://github.com/square/okhttp 我們可以在Android Studio中使用Gradle, 最后效果如下: 測試使用我們的OKHttp第三方庫1.第一步我們需要去創(chuàng)建一個 OKHttpClient 對象OkHttpClient okHttpClient = new OkHttpClient();
2.下一步我們還需要一個 Request 對象,她可以已如下方式被創(chuàng)建Request request = new Request.Builder() .url(requestUrl) .build(); requestUrl是一個字符串變量代表這個URL是為了JSON請求(The requestUrl is a String variable representing the Url for the JSON request.) 在這個測試中,我們將會使用如下的URl:http:///api/v1/random?format=json 3.再下一步我們需要實例化一個 Call 對象Call call = okHttpClient.newCall(request);
Call對象會取走我們的 okHttpClient對象 和 我們的 request對象。
4.在實例化Call對象后,我們現(xiàn)在可以 Execute(執(zhí)行)她。Executing一個Call后將會返回一個 Response,并且會拋出一個 IOException的異常,這就是為什么們會用一個try,catch塊包裹她。
5.執(zhí)行完我們的Call后,我們需要通過使用 response.isSuccessful()來檢查Call對象是否執(zhí)行成功,通過response.isSuccessful()的返回值為true或者是false來判斷。這我們僅僅是一個測試,如果Call成功的話,我們將會通過Log來打印我們的response。try{ Response response = call.execute(); if(response.isSuccessful()){ //The call was successful.print it to the log Log.v("OKHttp",response.body().string()); } }catch(IOException e){ e.printStackTrace(); }
6.測試Code!這是新手一個常見的錯誤。在Android中不允許任何網(wǎng)絡(luò)的交互在主線程中進行。It disallows it to force developers to use asynchronous callbacks.(能力有限這句話不敢強譯)。但是現(xiàn)在,我們的代碼看起來看起來十分的號好!下面我們來看看如何修復(fù)這個問題。
7.Fix issue為了修補這個問題,我們只需要讓我們的Call執(zhí)行在非主線程內(nèi),所以利用一個 asynchronous callback(異步的callBack)。 讓我們call異步的方法是通過調(diào)用我們Call對象的 enqueue()方法。 call.enqueue(new Callback()) { @Override public void onFailure( Request request, IOException e ) { } @Override public void OnResponse( Response response) throws IOException { try { if(response.isSuccessful()){ //The call was successful. print it to the log log.v("OKHttp",response.body.string()); } }catch (IOException e) { e.printStackTrace(); } } });
8.在我們再次執(zhí)行我們的code之前,我們還需要再改一改。如果我們想要現(xiàn)在執(zhí)行她,我們可能還會接收到錯誤的提示,因為我們應(yīng)用的程序沒有得到相應(yīng)的相應(yīng)的網(wǎng)絡(luò)權(quán)限。所以我們需要再AndroidManifest.xml中添加應(yīng)用權(quán)限。<uses-permission android:name="android.permission.INTERNET"/>
9.當我們執(zhí)行完code后,我們將接受到如下的log輸出:
10.This means, we are now able to execute asynchronous network calls and use the data inside the callback method, when it is ready!
寫完后,瞬間爽朗起來。雖然還有問題。 譯文來自:https:///tutorial/android-tutorial-part-5-using-okhttp/
http://www./android-basic
https://github.com/square/okhttp/wiki/Recipes
|
|
來自: 昵稱10504424 > 《工作》