android網路請求元件(一)OkHttp3的封裝使用
阿新 • • 發佈:2019-02-08
/** * 處理伺服器返回的響應資料 * @param responseObj */ private void handleResponse(Object responseObj) { // 為了保證程式碼的健壯性 if (responseObj == null || responseObj.toString().trim().equals("")) { mListener.onFailure(new OkHttpException(NETWORK_ERROR, EMPTY_MSG)); return; } try { /** * 協議確定後看這裡如何修改 */ JSONObject result = new JSONObject(responseObj.toString()); // 開始嘗試解析json if(result.has(RESULT_CODE)){ // 從json物件中取出我們的響應碼,若為0,則是正確的響應(根據服務狀態碼來定) if (mClass == null) { // 不需要解析,直接返回資料到應用層 mListener.onSuccess(result); } else { Gson gson = new Gson(); Object obj = gson.fromJson(responseObj.toString(),mClass); // 表明正確的轉化成實體物件 if (obj != null) { mListener.onSuccess(obj); } else { // 返回的不是合法的json mListener.onFailure(new OkHttpException(JSON_ERROR, EMPTY_MSG)); } } }else { // 將伺服器返回我們的異常回調到應用層去處理 mListener.onFailure(new OkHttpException(OTHER_ERROR,result.get(RESULT_CODE))); } } catch (Exception e) { mListener.onFailure(new OkHttpException(OTHER_ERROR, e.getMessage())); e.printStackTrace(); } }
大致梳理一下上面的程式碼,首先就是要判斷伺服器返回的資料是否有效,無效的話直接呼叫咱們封裝的onFailure()。然後根據伺服器返回的狀態碼是否是成功的。接著就是要處理Json資料,就是將Json資料轉化成實體物件.這裡我們可以使用第三方的Gson庫,直接在專案的build.gradle中引入就好了