|
@@ -124,29 +124,29 @@ public class BaiduClient {
|
|
|
responseHolder = new JsonHttpResponseHolder(statusCode, obj);
|
|
|
|
|
|
if (HttpStatus.SC_OK != responseHolder.getStatusCode()) {
|
|
|
- log.error("[Baidu AI]. getAccessToken; statusCode=" + statusCode
|
|
|
- + "; responseEntity=" + entityStr);
|
|
|
+ log.error("[Baidu AI Response]. statusCode=" + statusCode + "; responseEntity="
|
|
|
+ + entityStr);
|
|
|
} else {
|
|
|
if (log.isDebugEnabled()) {
|
|
|
- log.debug("[Baidu AI]. getAccessToken; statusCode=" + statusCode
|
|
|
- + "; responseEntity=" + entityStr);
|
|
|
+ log.debug("[Baidu AI Response]. statusCode=" + statusCode + "; responseEntity="
|
|
|
+ + entityStr);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
+ log.error("[Baidu AI FAIL]. fail to get access token.", e);
|
|
|
throw new ExamCloudRuntimeException(e);
|
|
|
} finally {
|
|
|
IOUtils.closeQuietly(response);
|
|
|
}
|
|
|
|
|
|
if (log.isDebugEnabled()) {
|
|
|
- log.debug("[Baidu AI]. getAccessToken; cost " + (System.currentTimeMillis() - s)
|
|
|
- + " ms.");
|
|
|
+ log.debug("[Baidu AI]. cost " + (System.currentTimeMillis() - s) + " ms.");
|
|
|
}
|
|
|
|
|
|
int statusCode = responseHolder.getStatusCode();
|
|
|
if (HttpStatus.SC_OK != statusCode) {
|
|
|
- throw new StatusException("920", "[Baidu AI]. fail to get access_token");
|
|
|
+ throw new StatusException("920", "[Baidu AI]. fail to get access token");
|
|
|
}
|
|
|
|
|
|
JSONObject respBody = responseHolder.getRespBody();
|
|
@@ -165,7 +165,7 @@ public class BaiduClient {
|
|
|
public JsonHttpResponseHolder verifyFaceLiveness(String imageUrl) {
|
|
|
|
|
|
if (log.isDebugEnabled()) {
|
|
|
- log.debug("[Baidu AI]. verifyFaceLiveness(String); imageUrl=" + imageUrl);
|
|
|
+ log.debug("[Baidu AI]. imageUrl=" + imageUrl);
|
|
|
}
|
|
|
|
|
|
String accessToken = getAccessToken();
|
|
@@ -197,19 +197,25 @@ public class BaiduClient {
|
|
|
JSONObject obj = JSON.parseObject(entityStr);
|
|
|
responseHolder = new JsonHttpResponseHolder(statusCode, obj);
|
|
|
|
|
|
- if (log.isDebugEnabled()) {
|
|
|
- log.debug("[Baidu AI]. verifyFaceLiveness(String); statusCode=" + statusCode
|
|
|
- + "; responseEntity=" + entityStr);
|
|
|
+ if (HttpStatus.SC_OK != responseHolder.getStatusCode()) {
|
|
|
+ log.error("[Baidu AI Response]. statusCode=" + statusCode + "; responseEntity="
|
|
|
+ + entityStr);
|
|
|
+ } else {
|
|
|
+ if (log.isDebugEnabled()) {
|
|
|
+ log.debug("[Baidu AI Response]. statusCode=" + statusCode + "; responseEntity="
|
|
|
+ + entityStr);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
+ log.error("[Baidu AI FAIL].", e);
|
|
|
throw new ExamCloudRuntimeException(e);
|
|
|
} finally {
|
|
|
IOUtils.closeQuietly(response);
|
|
|
}
|
|
|
|
|
|
if (log.isDebugEnabled()) {
|
|
|
- log.debug("[Baidu AI]. verifyFaceLiveness(String); imageUrl=" + imageUrl + "; cost "
|
|
|
+ log.debug("[Baidu AI]. imageUrl=" + imageUrl + "; cost "
|
|
|
+ (System.currentTimeMillis() - s) + " ms.");
|
|
|
}
|
|
|
|
|
@@ -254,16 +260,17 @@ public class BaiduClient {
|
|
|
responseHolder = new JsonHttpResponseHolder(statusCode, obj);
|
|
|
|
|
|
if (HttpStatus.SC_OK != responseHolder.getStatusCode()) {
|
|
|
- log.error("[Baidu AI]. verifyFaceLivenessUseBase64; statusCode=" + statusCode
|
|
|
- + "; responseEntity=" + entityStr);
|
|
|
+ log.error("[Baidu AI Response]. statusCode=" + statusCode + "; responseEntity="
|
|
|
+ + entityStr);
|
|
|
} else {
|
|
|
if (log.isDebugEnabled()) {
|
|
|
- log.debug("[Baidu AI]. verifyFaceLivenessUseBase64; statusCode=" + statusCode
|
|
|
- + "; responseEntity=" + entityStr);
|
|
|
+ log.debug("[Baidu AI Response]. statusCode=" + statusCode + "; responseEntity="
|
|
|
+ + entityStr);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
+ log.error("[Baidu AI FAIL].", e);
|
|
|
throw new ExamCloudRuntimeException(e);
|
|
|
} finally {
|
|
|
IOUtils.closeQuietly(response);
|
|
@@ -292,31 +299,50 @@ public class BaiduClient {
|
|
|
throws StatusException {
|
|
|
|
|
|
if (log.isDebugEnabled()) {
|
|
|
- log.debug("[Face++]. verifyFaceLiveness(String,String); imageUrl=" + imageUrl
|
|
|
- + "; backupImageUrl=" + backupImageUrl);
|
|
|
+ log.debug("[Face++]. imageUrl=" + imageUrl + "; backupImageUrl=" + backupImageUrl);
|
|
|
}
|
|
|
|
|
|
- JsonHttpResponseHolder responseHolder = verifyFaceLiveness(imageUrl);
|
|
|
+ JsonHttpResponseHolder responseHolder = null;
|
|
|
|
|
|
- JSONObject respBody = responseHolder.getRespBody();
|
|
|
- long errCode = respBody.getLong("error_code");
|
|
|
+ boolean exceptionWhenUsingImageUrl = false;
|
|
|
+ boolean exceptionWhenUsingBackupImageUrl = false;
|
|
|
|
|
|
- if (0 == errCode) {
|
|
|
- return responseHolder;
|
|
|
+ try {
|
|
|
+ responseHolder = verifyFaceLiveness(imageUrl);
|
|
|
+ } catch (ExamCloudRuntimeException e) {
|
|
|
+ exceptionWhenUsingImageUrl = true;
|
|
|
}
|
|
|
|
|
|
- if (retry(errCode)) {
|
|
|
- responseHolder = verifyFaceLiveness(backupImageUrl);
|
|
|
+ if (exceptionWhenUsingImageUrl) {
|
|
|
+ try {
|
|
|
+ responseHolder = verifyFaceLiveness(backupImageUrl);
|
|
|
+ } catch (ExamCloudRuntimeException e) {
|
|
|
+ exceptionWhenUsingBackupImageUrl = true;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ long errCode = responseHolder.getRespBody().getLong("error_code");
|
|
|
+
|
|
|
+ if (0 == errCode) {
|
|
|
+ return responseHolder;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (retry(errCode)) {
|
|
|
+ try {
|
|
|
+ responseHolder = verifyFaceLiveness(backupImageUrl);
|
|
|
+ } catch (ExamCloudRuntimeException e) {
|
|
|
+ exceptionWhenUsingBackupImageUrl = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
- respBody = responseHolder.getRespBody();
|
|
|
- errCode = respBody.getLong("error_code");
|
|
|
+ long errCode = responseHolder.getRespBody().getLong("error_code");
|
|
|
|
|
|
if (0 == errCode) {
|
|
|
return responseHolder;
|
|
|
}
|
|
|
|
|
|
- if (retry(errCode)) {
|
|
|
+ if (exceptionWhenUsingBackupImageUrl || retry(errCode)) {
|
|
|
HttpGet get = new HttpGet(backupImageUrl);
|
|
|
get.setConfig(BaiduClient.requestConfig);
|
|
|
CloseableHttpResponse response = null;
|
|
@@ -327,7 +353,7 @@ public class BaiduClient {
|
|
|
|
|
|
if (HttpStatus.SC_OK != response.getStatusLine().getStatusCode()) {
|
|
|
throw new StatusException("901",
|
|
|
- "fail to download file. url=" + backupImageUrl);
|
|
|
+ "fail to download image file. url=" + backupImageUrl);
|
|
|
}
|
|
|
|
|
|
byte[] byteArray = EntityUtils.toByteArray(response.getEntity());
|
|
@@ -338,18 +364,18 @@ public class BaiduClient {
|
|
|
imageBase64 = Base64.encodeBase64String(byteArray);
|
|
|
|
|
|
} catch (StatusException e) {
|
|
|
- log.error("fail to download file. url=" + backupImageUrl, e);
|
|
|
+ log.error("fail to download image file. url=" + backupImageUrl, e);
|
|
|
throw e;
|
|
|
} catch (Exception e) {
|
|
|
- log.error("fail to download file. url=" + backupImageUrl, e);
|
|
|
+ log.error("fail to download image file. url=" + backupImageUrl, e);
|
|
|
throw new StatusException("903", "fail to download file. url=" + backupImageUrl, e);
|
|
|
} finally {
|
|
|
IOUtils.closeQuietly(response);
|
|
|
}
|
|
|
|
|
|
if (log.isDebugEnabled()) {
|
|
|
- log.debug("[Face++]. verifyFaceLiveness(String,String); download image; url="
|
|
|
- + backupImageUrl + "; cost " + (System.currentTimeMillis() - s) + " ms.");
|
|
|
+ log.debug("download image file successfully; url=" + backupImageUrl + "; cost "
|
|
|
+ + (System.currentTimeMillis() - s) + " ms.");
|
|
|
}
|
|
|
|
|
|
responseHolder = verifyFaceLivenessUseBase64(imageBase64);
|
|
@@ -358,6 +384,13 @@ public class BaiduClient {
|
|
|
return responseHolder;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 是否重试
|
|
|
+ *
|
|
|
+ * @author WANGWEI
|
|
|
+ * @param errCode
|
|
|
+ * @return
|
|
|
+ */
|
|
|
private boolean retry(long errCode) {
|
|
|
return 222204 == errCode || 222013 == errCode;
|
|
|
}
|