失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 微信小程序发布需要校验敏感信息(内容 图片)-Java后端实现

微信小程序发布需要校验敏感信息(内容 图片)-Java后端实现

时间:2022-02-23 17:09:16

相关推荐

微信小程序发布需要校验敏感信息(内容 图片)-Java后端实现

精选30+云产品,助力企业轻松上云!>>>

前端只需要将图片和内容传过来即可

pom依赖

HttpClient的依赖和json转换的依赖

<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.54</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.10</version></dependency>

封装Vo类

用于获取到access_token后进行转换,access_token是什么就不用我多说了吧

public class AccessTokenVO {private String access_token;private Integer expires_in;//记得给get set方法}

封装工具类

import com.alibaba.fastjson.JSONObject;import com.itheima.fete.pojo.AccessTokenVO;import org.apache.http.HttpEntity;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.methods.HttpGet;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.*;/*** @author manlu*/public 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./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");// 转成stringJSONObject jso = JSONObject.parseObject(result);return getResult(jso);} catch (Exception e) {e.printStackTrace();return true;}}/*** 校验内容是否有敏感信息* @param accessToken* @param content* @return*/private static Boolean checkContent(String accessToken, String content) {try {CloseableHttpClient httpclient = HttpClients.createDefault();CloseableHttpResponse response = null;HttpPost request = new HttpPost("https://api./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");// 转成stringJSONObject jso = JSONObject.parseObject(result);return getResult(jso);} catch (Exception e) {e.printStackTrace();return true;}}/*** 返回状态信息,可以修改为自己的逻辑* @param jso* @return*/private static Boolean getResult(JSONObject jso) {Object errcode = jso.get("errcode");int errCode = (int) errcode;if (errCode == 0) {return true;} else if (errCode == 87014) {return false;} else {return false;}}/*** 获取小程序的 access_token* @return*/public static String getAccessToken() {AccessTokenVO accessTokenVO = null;try {CloseableHttpClient httpclient = HttpClients.createDefault();CloseableHttpResponse response = null;//改成自己的appid和secretHttpGet request = new HttpGet("https://api./cgi-bin/token?grant_type=client_credential&appid=wxbh0594d32gf315&secret=c9864f6e8aafg8313b6d5d608bd6a6b");request.addHeader("Content-Type", "application/json");response = httpclient.execute(request);HttpEntity httpEntity = response.getEntity();String result = EntityUtils.toString(httpEntity, "UTF-8");// 转成stringaccessTokenVO = JSONObject.parseObject(result, AccessTokenVO.class);//返回tokenreturn accessTokenVO.getAccess_token();} catch (IOException e) {e.printStackTrace();}return null;}}

编写Controller层

import com.itheima.fete.utils.SenInfoCheckUtil;import org.springframework.web.bind.annotation.*;import org.springframework.web.multipart.MultipartFile;import java.io.IOException;/*** @author 漫路h* 校验内容是否敏感*/@RestController@RequestMapping("/check")public class CheckController {/*** 校验内容* @param content* @return* @throws IOException*/@GetMapping("/content/{content}")public Boolean checkContent(@PathVariable String content) {String accessToken = SenInfoCheckUtil.getAccessToken();return SenInfoCheckUtil.cotentFilter(accessToken, content);}/*** 校验图片* @param multipartFile* @return*/@PostMapping("/image")public Boolean checkImage(@RequestPart(value = "file") MultipartFile multipartFile){String accessToken = SenInfoCheckUtil.getAccessToken();return SenInfoCheckUtil.imgFilter(accessToken, multipartFile);}}

如果不明白就问,如果需要uniapp代码的kou我

如果觉得《微信小程序发布需要校验敏感信息(内容 图片)-Java后端实现》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。