You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
4.0 KiB
95 lines
4.0 KiB
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSONArray;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.aliyuncs.DefaultAcsClient;
|
|
import com.aliyuncs.IAcsClient;
|
|
import com.aliyuncs.exceptions.ClientException;
|
|
import com.aliyuncs.exceptions.ServerException;
|
|
import com.aliyuncs.green.model.v20180509.ImageAsyncScanRequest;
|
|
import com.aliyuncs.http.FormatType;
|
|
import com.aliyuncs.http.HttpResponse;
|
|
import com.aliyuncs.profile.DefaultProfile;
|
|
import com.aliyuncs.profile.IClientProfile;
|
|
import com.epmet.openapi.scan.common.enu.RegionIdEnum;
|
|
|
|
import java.util.*;
|
|
|
|
/**
|
|
* Created by liuhai.lh on 2017/2/17.
|
|
* 图片异步检测接口
|
|
* @author liuhai.lh
|
|
* @date 2017/02/17
|
|
*/
|
|
public class ImageAsyncScanRequestSample extends BaseSample{
|
|
|
|
public static void main(String[] args) throws Exception {
|
|
//请替换成你自己的accessKeyId、accessKeySecret
|
|
IClientProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
|
|
DefaultProfile.addEndpoint(getEndPointName(), regionId, "Green", RegionIdEnum.getDoMain(regionId));
|
|
IAcsClient client = new DefaultAcsClient(profile);
|
|
|
|
ImageAsyncScanRequest imageAsyncScanRequest = new ImageAsyncScanRequest();
|
|
imageAsyncScanRequest.setAcceptFormat(FormatType.JSON); // 指定api返回格式
|
|
imageAsyncScanRequest.setMethod(com.aliyuncs.http.MethodType.POST); // 指定请求方法
|
|
imageAsyncScanRequest.setEncoding("utf-8");
|
|
imageAsyncScanRequest.setRegionId(regionId);
|
|
|
|
|
|
List<Map<String, Object>> tasks = new ArrayList<Map<String, Object>>();
|
|
Map<String, Object> task1 = new LinkedHashMap<String, Object>();
|
|
task1.put("dataId", UUID.randomUUID().toString());
|
|
task1.put("url", "https://img.alicdn.com/tfs/TB1Xk_qvwmTBuNjy1XbXXaMrVXa-550-407.jpg");
|
|
task1.put("time", new Date());
|
|
|
|
tasks.add(task1);
|
|
JSONObject data = new JSONObject();
|
|
/**
|
|
* porn: 色情
|
|
* terrorism: 暴恐
|
|
* qrcode: 二维码
|
|
* ad: 图片广告
|
|
* ocr: 文字识别
|
|
*/
|
|
data.put("scenes", Arrays.asList("porn", "ocr", "qrcode", "sface"));
|
|
data.put("tasks", tasks);
|
|
|
|
imageAsyncScanRequest.setHttpContent(data.toJSONString().getBytes("UTF-8"), "UTF-8", FormatType.JSON);
|
|
|
|
/**
|
|
* 请务必设置超时时间
|
|
*/
|
|
imageAsyncScanRequest.setConnectTimeout(3000);
|
|
imageAsyncScanRequest.setReadTimeout(6000);
|
|
|
|
try {
|
|
HttpResponse httpResponse = client.doAction(imageAsyncScanRequest);
|
|
|
|
if(httpResponse.isSuccess()){
|
|
JSONObject scrResponse = JSON.parseObject(new String(httpResponse.getHttpContent(), "UTF-8"));
|
|
System.out.println(JSON.toJSONString(scrResponse, true));
|
|
if (200 == scrResponse.getInteger("code")) {
|
|
JSONArray taskResults = scrResponse.getJSONArray("data");
|
|
for (Object taskResult : taskResults) {
|
|
if(200 == ((JSONObject)taskResult).getInteger("code")){
|
|
String taskId = ((JSONObject)taskResult).getString("taskId");
|
|
// 将taskId 保存下来,间隔一段时间来轮询结果, 参照ImageAsyncScanResultsRequest
|
|
System.out.println("args = [" + taskId + "]");
|
|
}else{
|
|
System.out.println("task process fail:" + ((JSONObject)taskResult).getInteger("code"));
|
|
}
|
|
}
|
|
} else {
|
|
System.out.println("detect not success. code:" + scrResponse.getInteger("code"));
|
|
}
|
|
}else{
|
|
System.out.println("response not success. status:" + httpResponse.getStatus());
|
|
}
|
|
} catch (ServerException e) {
|
|
e.printStackTrace();
|
|
} catch (ClientException e) {
|
|
e.printStackTrace();
|
|
} catch (Exception e){
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
|