微信小程序敏感内容检测(图片和文字)java 实现
1、实现代码
import com.alibaba.fastjson.JSONObject;import lombok.extern.slf4j.Slf4j;import org.apache.http.HttpEntity;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.methods.HttpPost;import org.apache.http.entity.ByteArrayEntity;import org.apache.http.entity.ContentType;import org.apache.http.entity.StringEntity;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;import org.apache.http.util.EntityUtils;import org.springframework.web.multipart.MultipartFile;import java.io.*;import java.util.*;@Slf4jpublic class SenInfoCheckUtil { /** * 图片违规检测 * @param accessToken * @param file * @return */ public static Boolean imgFilter(String accessToken, MultipartFile file){ String contentType = file.getContentType(); return checkPic(file, accessToken,contentType); } /** * 文本违规检测 * @param accessToken * @param content * @return */ public static Boolean cotentFilter(String accessToken, String content){ return checkContent(accessToken,content); } /** * 恶意图片过滤 * @param multipartFile * @return */ private static Boolean checkPic(MultipartFile multipartFile, String accessToken,String contentType) { try { CloseableHttpClient httpclient = HttpClients.createDefault(); CloseableHttpResponse response = null; HttpPost request = new HttpPost("https://api.weixin.qq.com/wxa/img_sec_check?access_token=" + accessToken); request.addHeader("Content-Type", "application/octet-stream"); InputStream inputStream = multipartFile.getInputStream(); byte[] byt = new byte[inputStream.available()]; inputStream.read(byt); request.setEntity(new ByteArrayEntity(byt, ContentType.create(contentType))); response = httpclient.execute(request); HttpEntity httpEntity = response.getEntity(); String result = EntityUtils.toString(httpEntity, "UTF-8");// 转成string JSONObject jso = JSONObject.parseObject(result); return getResult(jso); } catch (Exception e) { e.printStackTrace(); log.info("----------------调用腾讯内容过滤系统出错------------------"); return true; } } private static Boolean checkContent(String accessToken,String content) { try { CloseableHttpClient httpclient = HttpClients.createDefault(); CloseableHttpResponse response = null; HttpPost request = new HttpPost("https://api.weixin.qq.com/wxa/msg_sec_check?access_token=" + accessToken); request.addHeader("Content-Type", "application/json"); Map<String, String> map = new HashMap<>(); map.put("content",content); String body = JSONObject.toJSONString(map); request.setEntity(new StringEntity(body,ContentType.create("text/json", "UTF-8"))); response = httpclient.execute(request); HttpEntity httpEntity = response.getEntity(); String result = EntityUtils.toString(httpEntity, "UTF-8");// 转成string JSONObject jso = JSONObject.parseObject(result); return getResult(jso); } catch (Exception e) { e.printStackTrace(); log.info("----------------调用腾讯内容过滤系统出错------------------"); return true; } } private static Boolean getResult(JSONObject jso){ Object errcode = jso.get("errcode"); int errCode = (int) errcode; if (errCode == 0) { return true; } else if (errCode == 87014) { log.info("图片内容违规-----------"); return false; } return true; }}