private JSONObject commonProcess(Map<String, String> paramOpt) {
        adjustOpt(paramOpt);
        ResponseCore ret = baseControl(paramOpt);
        
        if (ret == null) {
            throw new ChannelException("base control returned empty object", CHANNEL_SDK_SYS);
        }
        
        if (ret.isOK()) {
            try {
                JSONObject result = new JSONObject(ret.body);
                this.requestId = result.getInt("request_id");
                return result;
            } catch (JSONException ex) {
                throw new ChannelException(ret.body, CHANNEL_SDK_HTTP_STATUS_OK_BUT_RESULT_ERROR);
            }
        }
        else {
            try {
                JSONObject result = new JSONObject(ret.body);
                this.requestId = result.getInt("request_id");
                throw new ChannelException(result.getString("error_msg"), result.getInt("error_code"));
            } catch (JSONException ex) {
                throw new ChannelException("ret body:" + ret.body, CHANNEL_SDK_HTTP_STATUS_ERROR_AND_RESULT_ERROR);
            }
        }
    }