Java后端怎么实现微信小程序校验信息
这篇文章主要讲解了“Java后端怎么实现微信小程序校验信息”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java后端怎么实现微信小程序校验信息”吧!
我们提供的服务有:网站制作、做网站、微信公众号开发、网站优化、网站认证、天元ssl等。为千余家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的天元网站制作公司
前端只需要将图片和内容传过来即可
pom依赖
HttpClient的依赖和json转换的依赖
com.alibaba fastjson 1.2.54 org.apache.httpcomponents httpclient 4.5.10
封装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 兮赫 */ 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.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(); 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.weixin.qq.com/wxa/msg_sec_check?access_token=" + accessToken); request.addHeader("Content-Type", "application/json"); Mapmap = 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(); 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和secret HttpGet request = new HttpGet("https://api.weixin.qq.com/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");// 转成string accessTokenVO = JSONObject.parseObject(result, AccessTokenVO.class); //返回token return 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 兮赫 * 校验内容是否敏感 */ @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); } }
感谢各位的阅读,以上就是“Java后端怎么实现微信小程序校验信息”的内容了,经过本文的学习后,相信大家对Java后端怎么实现微信小程序校验信息这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!
文章标题:Java后端怎么实现微信小程序校验信息
本文网址:http://myzitong.com/article/jscihh.html