1. 程式人生 > >android網路請求元件(一)OkHttp3的封裝使用

android網路請求元件(一)OkHttp3的封裝使用

    /**
     * 處理伺服器返回的響應資料
     * @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中引入就好了