开发者社区> 问答> 正文

ImageAsyncScanRequest使用时"msg":"[task.url] is not security" 求解答啊

/*

  • Licensed to the Apache Software Foundation (ASF) under one
  • or more contributor license agreements. See the NOTICE file
  • distributed with this work for additional information
  • regarding copyright ownership. The ASF licenses this file
  • to you under the Apache License, Version 2.0 (the
  • "License"); you may not use this file except in compliance
  • with the License. You may obtain a copy of the License at
    *
  • http://www.apache.org/licenses/LICENSE-2.0
    *
  • Unless required by applicable law or agreed to in writing,
  • software distributed under the License is distributed on an
  • "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  • KIND, either express or implied. See the License for the
  • specific language governing permissions and limitations
  • under the License.
    */

package com.ssh.acm;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
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.v20170112.ImageAsyncScanRequest;
import com.aliyuncs.http.FormatType;
import com.aliyuncs.http.HttpResponse;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
/**

  • Created by liuhai.lh on 2017/2/17.
  • 图片异步检测接口
  • @author liuhai.lh
  • @date 2017/02/17
    */

public class PicturetoWord {

public static void main(String[] args) throws Exception {
    //请替换成你自己的accessKeyId、accessKeySecret
    IClientProfile profile = DefaultProfile.getProfile("cn-shanghai", "LTAIzuajFMA4u8jD", "KCgSEAApd3jI9pC4xEGkq6mOh2YXc9");
    DefaultProfile.addEndpoint("cn-shanghai", "cn-shanghai", "Green", "green.cn-shanghai.aliyuncs.com");
    IAcsClient client = new DefaultAcsClient(profile);
    ImageAsyncScanRequest imageAsyncScanRequest = new ImageAsyncScanRequest();
    imageAsyncScanRequest.setAcceptFormat(FormatType.JSON); // 指定api返回格式
    imageAsyncScanRequest.setContentType(FormatType.JSON);
    imageAsyncScanRequest.setMethod(com.aliyuncs.http.MethodType.POST); // 指定请求方法
    imageAsyncScanRequest.setEncoding("utf-8");
    imageAsyncScanRequest.setRegionId("cn-shanghai");
    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://localhost:8888/SSH/images/lixiang@163.com/111.jpg");
    task1.put("time", new Date());
    tasks.add(task1);
    JSONObject data = new JSONObject();
    /**
     * porn: 色情
     * terrorism: 暴恐
     * qrcode: 二维码
     * ad: 图片广告
     * ocr: 文字识别
     */
    data.put("scenes", Arrays.asList("ocr"));
    data.put("tasks", tasks);
    imageAsyncScanRequest.setContent(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.getContent(), "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();
    }
}

}

展开
收起
CoolerWu 2017-07-27 20:53:21 6708 0
1 条回答
写回答
取消 提交回答
  • https://localhost:8888 这个地址是你本地的地址,如果是测试服务一般是 HTTP 协议,可以尝试将 https 改成http,或者换成图片实际的地址。

    2020-03-18 00:10:05
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Expert Tips to Command Your Na 立即下载
Scaling SparkR in Production. Lessons from the Field 立即下载
Scaling SparkR in Production. Lessons from the Field. 立即下载