public bool TryGetSearchRoomList(SearchRoomListQuery query, Model.HandlerSession session, out List<Model.MeetingRoom> roomList, out string error)
        {
            roomList = new List<MeetingRoom>();
            error = string.Empty;
            try
            {
                session.AddMessageId();
                string xmlData = string.Format("<?xml version=\"1.0\" encoding=\"utf-8\"?><roomList><messageId>{0}</messageId><token>{1}</token><pageSize>{2}</pageSize><pageNumber>{3}</pageNumber><roomName>{4}</roomName><alias>{5}</alias><roomType>{6}</roomType></roomList>",
                                                session.MessageId,
                                                session.Token,
                                                query.pageSize,
                                                query.pageNumber,
                                                query.roomName,
                                                query.alias,
                                                query.roomType
                                                );
                ////logger.Debug(string.Format("TryGetMeetingRoomList, xmldata: {0}", xmlData));
                var response = this._client.DoHttpWebRequest(session.BaseUrl + "roomSearch", xmlData);
                ////logger.Debug(string.Format("TryGetMeetingRoomList response, xmldata: {0}", response.OuterXml));

                XmlNode root = response.SelectSingleNode("roomList");
                string status = root.SelectSingleNode("result").InnerText;

                if (status == "200")
                {
                    foreach (var item in root.SelectNodes("roomInfo"))
                    {
                        var node = item as XmlNode;
                        var room = new MeetingRoom();
                        room.RoomId = node.SelectSingleNode("roomId").InnerText.Split(",".ToCharArray())[0];
                        room.Name = node.SelectSingleNode("roomName").InnerText;

                        roomList.Add(room);
                    }

                    return true;
                }
                else
                {
                    //logger.Error(string.Format("TryGetMeetingRoomList failed, status: {0}, error:{1}", status, response.InnerXml));
                    error = "error Code: " + status;
                    this.ReLogin(session, root.SelectSingleNode("result"));
                    return false;
                }
            }
            catch (Exception ex)
            {
                //logger.Error("TryGetMeetingRoomList failed, error:" + ex.Message + "\n" + ex.StackTrace);
                error = ex.Message;
                this.Login(ref session);
            }

            return false;
        }
        public bool TryGetMeetingRoomList(MeetingRoomListQuery query, Model.HandlerSession session, out List<Model.MeetingRoom> roomList)
        {
            roomList = new List<MeetingRoom>();

            try
            {
                session.AddMessageId();
                string xmlData = string.Format("<?xml version=\"1.0\" encoding=\"utf-8\"?><roomList><messageId>{0}</messageId><token>{1}</token><seriesId>{2}</seriesId><levelId>{3}</levelId><confType>{4}</confType><startTime>{5}</startTime><endTime>{6}</endTime></roomList>",
                                                session.MessageId,
                                                session.Token,
                                                query.SeriesId,
                                                query.LevelId,
                                                (int)query.ConfType,
                                                query.StartTime.ToString("yyyy-MM-dd HH:mm:ss"),
                                                query.EndTime.ToString("yyyy-MM-dd HH:mm:ss")
                                                );
                ////logger.Debug(string.Format("TryGetMeetingRoomList, xmldata: {0}", xmlData));
                var response = this._client.DoHttpWebRequest(session.BaseUrl + "roomList", xmlData);
                ////logger.Debug(string.Format("TryGetMeetingRoomList response, xmldata: {0}", response.OuterXml));

                XmlNode root = response.SelectSingleNode("roomList");
                string status = root.SelectSingleNode("result").InnerText;

                if (status == "200")
                {
                    foreach (var item in root.SelectNodes("roomInfo"))
                    {
                        var node = item as XmlNode;
                        var room = new MeetingRoom();
                        room.RoomId = node.SelectSingleNode("roomId").InnerText.Split(",".ToCharArray())[0];
                        room.Name = node.SelectSingleNode("roomName").InnerText;

                        roomList.Add(room);
                    }

                    return true;
                }
                else
                {
                    //logger.Error(string.Format("TryGetMeetingRoomList failed, status: {0}, error:{1}", status, response.InnerXml));
                    this.ReLogin(session, root.SelectSingleNode("result"));
                    return false;
                }
            }
            catch (Exception ex)
            {
                //logger.Error("TryGetMeetingRoomList failed, error:" + ex.Message + "\n" + ex.StackTrace);
                this.Login(ref session);
            }

            return false;
        }