public void submitOrderRequest(SingleTrainOrderVO singleTrainOrderVO) {
		String title = "[登录用户：" + singleTrainOrderVO.getLoginUser() + "] ";
		HttpClient httpClient = buildHttpClient();
		TrainQueryInfo trainQueryInfo = singleTrainOrderVO.getTrainQueryInfo();
		try {
			// 提交预定的车次 一共25个参数
			List<NameValuePair> parameters = new ArrayList<NameValuePair>();
			parameters.add(new BasicNameValuePair(ORDER_ARRIVE_TIME, trainQueryInfo.getEndTime()));
			parameters.add(new BasicNameValuePair(ORDER_FROM_STATION_NAME, trainQueryInfo.getFromStation()));
			parameters.add(new BasicNameValuePair(ORDER_FROM_STATION_NO, trainQueryInfo.getFormStationNo()));
			parameters.add(new BasicNameValuePair(ORDER_FROM_STATION_TELECODE, trainQueryInfo.getFromStationCode()));
			parameters
					.add(new BasicNameValuePair(ORDER_FROM_STATION_TELECODE_NAME, trainQueryInfo.getFromStationName()));
			parameters.add(new BasicNameValuePair(ORDER_INCLUDE_STUDENT, "00"));
			parameters.add(new BasicNameValuePair(ORDER_LISHI, trainQueryInfo.getTakeTime()));
			parameters.add(new BasicNameValuePair(ORDER_LOCATIONCODE, trainQueryInfo.getLocationCode()));
			parameters.add(new BasicNameValuePair(ORDER_MMSTR, trainQueryInfo.getMmStr()));
			parameters.add(new BasicNameValuePair(ORDER_ROUND_START_TIME_STR, "00:00--24:00"));
			parameters.add(new BasicNameValuePair(ORDER_ROUND_TRAIN_DATE, singleTrainOrderVO.getTrainDate()));
			parameters.add(new BasicNameValuePair(ORDER_SEATTYPE_NUM, ""));
			parameters.add(new BasicNameValuePair(ORDER_SINGLE_ROUND_TYPE, trainQueryInfo.getSingle_round_type()));
			parameters.add(new BasicNameValuePair(ORDER_START_TIME_STR, "00:00--24:00"));
			parameters.add(new BasicNameValuePair(ORDER_STATION_TRAIN_CODE, trainQueryInfo.getTrainNo()));
			parameters.add(new BasicNameValuePair(ORDER_TO_STATION_NAME, trainQueryInfo.getToStation()));
			parameters.add(new BasicNameValuePair(ORDER_TO_STATION_NO, trainQueryInfo.getToStationNo()));
			parameters.add(new BasicNameValuePair(ORDER_TO_STATION_TELECODE, trainQueryInfo.getToStationCode()));
			parameters.add(new BasicNameValuePair(ORDER_TO_STATION_TELECODE_NAME, trainQueryInfo.getToStationName()));
			parameters.add(new BasicNameValuePair(ORDER_TRAIN_CLASS_ARR, "QB#D#Z#T#K#QT#"));
			parameters.add(new BasicNameValuePair(ORDER_TRAIN_DATE, singleTrainOrderVO.getTrainDate()));
			parameters.add(new BasicNameValuePair(ORDER_TRAIN_PASS_TYPE, "QB"));
			parameters.add(new BasicNameValuePair(ORDER_TRAIN_START_TIME, trainQueryInfo.getStartTime()));
			parameters.add(new BasicNameValuePair(ORDER_TRAINNO4, trainQueryInfo.getTrainno4()));
			parameters.add(new BasicNameValuePair(ORDER_YPINFODETAIL, trainQueryInfo.getYpInfoDetail()));

			TicketMainFrame.appendMessage(title + "提交订票请求, 车次：" + singleTrainOrderVO.getTrainNo() + ",席别："
					+ singleTrainOrderVO.getSeatType());
			HttpResponse response = postHttpRequest(httpClient, POST_URL_SUBMUTORDERREQUEST, parameters,
					singleTrainOrderVO.getCookieData());

			int statusCode = response.getStatusLine().getStatusCode();

			// 返回码 301 或 302 转发到location的新地址
			if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY || statusCode == HttpStatus.SC_MOVED_TEMPORARILY) {
				Header locationHeader = response.getFirstHeader("location");
				String redirectUrl = locationHeader.getValue();

				TicketMainFrame.appendMessage(title + "订票请求响应代码：" + statusCode + ", 转向获取订票凭证数据");
				logger.debug("Response StatusCode: " + statusCode, "Redirect to URL: " + redirectUrl);
				HttpClient httpClient2 = buildHttpClient();
				String responseBody = postHttpRequestAsString(httpClient2, redirectUrl, null,
						singleTrainOrderVO.getCookieData());
				httpClient2.getConnectionManager().shutdown();
				String leftTicketStr = TicketUtil.getCredential(responseBody);
				if (StringUtils.isBlank(leftTicketStr)) {
					throw new IllegalArgumentException(title + "未取到有效的leftTicketStr数据");
				} else {
					TicketMainFrame.appendMessage(title + "成功获取到leftTicketStr凭证数据：" + leftTicketStr);
				}
				singleTrainOrderVO.setSubmitOrderRequestLeftTicketStr(leftTicketStr);
				String token = TicketUtil.getToken(responseBody);
				if (StringUtils.isBlank(leftTicketStr)) {
					throw new IllegalArgumentException(title + "未取到有效的token数据");
				} else {
					TicketMainFrame.appendMessage(title + "成功获取到Token凭证数据：" + token);
				}
				singleTrainOrderVO.setSubmitOrderRequestToken(token);
			}
		} finally {
			httpClient.getConnectionManager().shutdown();
		}
	}