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> tasks = new ArrayList>(); Map task1 = new LinkedHashMap(); 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(); } } }