private static boolean downloadAPK(String url, String dest) {
		
		//todo Ӧüͬ
		if (cursor >= clients.length - 1) {
			cursor = 0;
			restClients();
		} else {
			cursor++;
		}
		
		//String threadName = Thread.currentThread().getName();
		//String fileName = dest + UUID.randomUUID() + ".apk";
		
		CloseableHttpClient httpClient = getHttpClient(cursor);
		HttpGet httpget = new HttpGet(url);
		//FileOutputStream out = null;
		CloseableHttpResponse response = null;
		try {
			//File tempFile = new File(fileName);
			//out = new FileOutputStream(tempFile);
			log.info("excute http get "+url);
			response = httpClient.execute(httpget);
			HttpEntity entity = response.getEntity();
			
			// Դٶŵ TODO Ż
			//apk1MߴСδ֪ʱֻ1M
			//дļ
			log.info("downloading file");
			long contentSize = entity.getContentLength();
			if(contentSize>ONE_MB_SIEZE||contentSize<0){
				byte[]b = new byte[ONE_MB_SIEZE];
				BufferedInputStream bis = new BufferedInputStream(entity.getContent());
				bis.read(b, 0, ONE_MB_SIEZE);
				bis.close();
			}else{
				byte[] b = EntityUtils.toByteArray(entity);
			}
			log.info("downloading over");

//			byte[] b = EntityUtils.toByteArray(entity);
//			1MBֻдһ
//			log.info("write file "+fileName);
//			if(b.length > ONE_MB_SIEZE){
//				out.write(b, 0, ONE_MB_SIEZE);
//			}else{
//				out.write(b);
//			}
//			log.info("write file over "+fileName);
			
//			out.close();
//			if(tempFile.exists()){
//				log.info("remove file "+fileName);
//				//tempFile.delete();
//			}
			
		} catch (Exception e) {// гֵ쳣Ϊʧ
			// TODO Auto-generated catch block
			e.printStackTrace();
			log.info(e.getMessage());
			return false;
		} finally {
			// ͷԴ
			try {
				//out.close();
				response.close();
			} catch (Exception e) {// гֵ쳣Ϊʧ
				// TODO Auto-generated catch block
				e.printStackTrace();
				log.info(e.getMessage());
				return false;
			}
		}
		return true;
	}