wangwei 5 년 전
부모
커밋
b8bc9a39f8
1개의 변경된 파일37개의 추가작업 그리고 10개의 파일을 삭제
  1. 37 10
      src/main/java/cn/com/qmth/examcloud/web/facepp/FaceppClient.java

+ 37 - 10
src/main/java/cn/com/qmth/examcloud/web/facepp/FaceppClient.java

@@ -151,6 +151,9 @@ public class FaceppClient {
 			}
 
 		} catch (Exception e) {
+			log.error("[Face++]. compareWithTokenAndImageUrl(String,String); faceToken=" + faceToken
+					+ "; imageUrl=" + imageUrl + "; cost " + (System.currentTimeMillis() - s)
+					+ " ms.", e);
 			throw new ExamCloudRuntimeException(e);
 		} finally {
 			IOUtils.closeQuietly(response);
@@ -186,22 +189,46 @@ public class FaceppClient {
 	public JsonHttpResponseHolder compareWithTokenAndImageUrl(String faceToken, String imageUrl,
 			String backupImageUrl) throws StatusException {
 
-		JsonHttpResponseHolder responseHolder = compareWithTokenAndImageUrl(faceToken, imageUrl);
+		JsonHttpResponseHolder responseHolder = null;
 
-		if (HttpStatus.SC_OK == responseHolder.getStatusCode()) {
-			return responseHolder;
+		boolean exceptionWhenUsingImageUrl = false;
+		boolean exceptionWhenUsingBackupImageUrl = false;
+
+		try {
+			responseHolder = compareWithTokenAndImageUrl(faceToken, imageUrl);
+		} catch (ExamCloudRuntimeException e) {
+			exceptionWhenUsingImageUrl = true;
 		}
 
-		JSONObject respBody = responseHolder.getRespBody();
-		String errMsg = respBody.getString("error_message");
-		if (retry(errMsg)) {
-			responseHolder = compareWithTokenAndImageUrl(faceToken, backupImageUrl);
+		if (exceptionWhenUsingImageUrl) {
+			try {
+				responseHolder = compareWithTokenAndImageUrl(faceToken, backupImageUrl);
+			} catch (ExamCloudRuntimeException e) {
+				exceptionWhenUsingBackupImageUrl = true;
+			}
+		} else {
+			if (HttpStatus.SC_OK == responseHolder.getStatusCode()) {
+				return responseHolder;
+			}
+
+			String errMsg = responseHolder.getRespBody().getString("error_message");
+			if (retry(errMsg)) {
+				try {
+					responseHolder = compareWithTokenAndImageUrl(faceToken, backupImageUrl);
+				} catch (ExamCloudRuntimeException e) {
+					exceptionWhenUsingBackupImageUrl = true;
+				}
+			}
+
+		}
+
+		if (HttpStatus.SC_OK == responseHolder.getStatusCode()) {
+			return responseHolder;
 		}
 
-		respBody = responseHolder.getRespBody();
-		errMsg = respBody.getString("error_message");
+		String errMsg = responseHolder.getRespBody().getString("error_message");
 
-		if (retry(errMsg)) {
+		if (exceptionWhenUsingBackupImageUrl || retry(errMsg)) {
 			HttpGet get = new HttpGet(backupImageUrl);
 			get.setConfig(FaceppClient.requestConfig);
 			CloseableHttpResponse response = null;