docs: public MessageListResult v2GetMessageList(int count, String begin_time, String end_time)
              throws APIConnectionException, APIRequestException {
          if(count <= 0 || count > 1000) {
              throw new IllegalArgumentException("count must more than 0 and less than 1001");
          }
  
          String requestUrl = mBaseReportPath + mV2MessagePath + "?count=" + count;
          String beginEncoded = null;
          String endEncoded = null;
          if (null != begin_time && StringUtils.isNotEmpty(begin_time) && null != end_time
                  && StringUtils.isNotEmpty(end_time)) {
              DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
              try {
                  Date beginDate = format.parse(begin_time);
                  Date endDate = format.parse(end_time);
                  if (endDate.getTime() - beginDate.getTime() < 0) {
                      throw new IllegalArgumentException("end time must lager than begin time");
                  } else if (endDate.getTime() - beginDate.getTime() > 7 * 24 * 60 * 60 * 1000) {
                      throw new IllegalArgumentException("end time lager than begin time over 7 days");
                  }
              } catch (ParseException e) {
                  e.printStackTrace();
              }
  
              try {
                  beginEncoded = URLEncoder.encode(begin_time, "utf-8");
                  endEncoded = URLEncoder.encode(end_time, "utf-8");
              } catch (Exception e) {
                  e.printStackTrace();
              }
              requestUrl = requestUrl + "&begin_time=" + beginEncoded + "&end_time=" + endEncoded;
          } else {
              throw new IllegalArgumentException("begin time or end time is null or empty");
          }
  
          ResponseWrapper response = _httpClient.sendGet(requestUrl);
          return MessageListResult.fromResponse(response, MessageListResult.class);
      }