public void searchTicket(String date) {
		HttpResponse response = null;
		String info = null;
		OrderParameter orderParameter = null;
		try {
			URIBuilder builder = new URIBuilder();
			builder.setScheme("https")
					.setHost("dynamic.12306.cn")
					.setPath("/otsweb/order/querySingleAction.do")
					.setParameter("method", "queryLeftTicket")
					.setParameter("orderRequest.train_date", date)
					.setParameter("orderRequest.from_station_telecode",
							configInfo.getFromStation())
					.setParameter("orderRequest.to_station_telecode",
							configInfo.getToStation());
			if (StringUtils.isNotEmpty(configInfo.getTrainNo())) {
				builder.setParameter("orderRequest.train_no",
						configInfo.getTrainNo());
			} else {
				builder.setParameter("orderRequest.train_no", "");
			}
			builder.setParameter("trainPassType", "QB")
					.setParameter("trainClass", configInfo.getTrainClass())
					.setParameter("includeStudent", "00")
					.setParameter("seatTypeAndNum", "")
					.setParameter("orderRequest.start_time_str",configInfo.getOrderTime());
			URI uri = builder.build();
			HttpGet httpGet = HttpClientUtil.getHttpGet(uri,
					UrlEnum.SEARCH_TICKET);
			response = httpClient.execute(httpGet);
			int code = response.getStatusLine().getStatusCode();
			info = EntityUtils.toString(response.getEntity());
			while(StringUtils.isBlank(info) || (orderParameter=checkTickeAndOrder(info, date)) == null){
				HttpClientUtils.closeQuietly(response);
				logger.info("没有余票,休息"+configInfo.getSearchSleepTime()+"秒，继续刷票");
				Thread.sleep(configInfo.getSearchSleepTime()*1000);
				response = httpClient.execute(httpGet);
				code = response.getStatusLine().getStatusCode();
				info = EntityUtils.toString(response.getEntity());
				if(StringUtils.contains(info, "系统维护中")){
					return;
				}
				if("-10".equals(info)|| StringUtils.isBlank(info)){
					logger.info("刷新太过频繁，休息"+configInfo.getSearchWatiTime()+"秒");
					Thread.sleep(configInfo.getSearchWatiTime()*1000);
				}
			}
			logger.info("有票了，开始订票~~~~~~~~~");
			String[] params = JsoupUtil.getTicketInfo(orderParameter.getDocument());
			logger.info("ticketType:" + orderParameter.getTicketType());
			orderTicket(date, params, orderParameter.getTicketType());
		} catch (Exception e) {
			logger.error("searchTicket error!", e);
		} finally {
			logger.info("close searchTicket");
			HttpClientUtils.closeQuietly(response);
		}
		if (StringUtils.isNotEmpty(info)) {
			checkTickeAndOrder(info, date);
		} else {
			try {
				Thread.sleep(10000);
			} catch (Exception e) {
				logger.error("searchTicket Thread error!", e);
			}
			searchTicket(date);
		}
	}