评论

内容安全imgSecCheck接口java代码示例

写小程序,遇到了图片安全校验,需要的是上传到自己服务器之后再获取图片使用imgSecCheck进行校验,最终处理成功,代码如下:

(其中:sendUrl为https://api.weixin.qq.com/wxa/img_sec_check?access_token=自己的access_token,imgUrl为服务器文件地址,比如/home/data/1.png)
/**
*
* @param sendUrl
* @param imgUrl
* @return
* @throws IOException
*/
public static String checkImgUrl(String sendUrl, String imgUrl) throws IOException {
String result = null;
URL urlObj = new URL(sendUrl);
HttpURLConnection con = (HttpURLConnection) urlObj.openConnection();
con.setRequestMethod(“POST”);
con.setDoInput(true);
con.setDoOutput(true);
con.setUseCaches(false);
con.setRequestProperty(“Connection”, “Keep-Alive”);
con.setRequestProperty(“Charset”, “UTF-8”);
String BOUNDARY = “----------” + System.currentTimeMillis();
con.setRequestProperty(“Content-Type”, “multipart/form-data; boundary=” + BOUNDARY);
StringBuilder sb = new StringBuilder();
sb.append("–");
sb.append(BOUNDARY);
sb.append("\r\n");
sb.append(“Content-Disposition: form-data;name=“media”;filename=”" + imgUrl + “”\r\n");
sb.append(“Content-Type:application/octet-stream\r\n\r\n”);
byte[] head = sb.toString().getBytes(“utf-8”);
OutputStream out = new DataOutputStream(con.getOutputStream());
out.write(head);
FileInputStream fis = new FileInputStream(imgUrl);
BufferedInputStream bis = new BufferedInputStream(fis);
DataInputStream in = new DataInputStream(bis);
int bytes = 0;
byte[] bufferOut = new byte[1024];
while ((bytes = in.read(bufferOut)) != -1) {
out.write(bufferOut, 0, bytes);
}
in.close();
byte[] foot = ("\r\n–" + BOUNDARY + “–\r\n”).getBytes(“utf-8”);
out.write(foot);
out.flush();
out.close();
StringBuffer buffer = new StringBuffer();
BufferedReader reader = null;
try {
reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null) {
buffer.append(line);
}
if (result == null) {
result = buffer.toString();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
reader.close();
}
}
return result;
}

最后返回成功,返回值{"errcode":0,"errmsg":"ok"}
{"errcode":87014,"errmsg":"risky content hint: [a1in802458622]"}
最后一次编辑于  2020-05-07  
点赞 1
收藏
评论

10 个评论

  • 鬼谷纵横
    鬼谷纵横
    2019-10-14

    老哥,你这个代码贴上去一直在报41005啊

    2019-10-14
    赞同 1
    回复 6
    • 鬼谷纵横
      鬼谷纵横
      2019-10-14
      {"errcode":41005,"errmsg":"media data missing hint: [mbGqUA09878622]"}一直提示的是这个
      2019-10-14
      1
      回复
    • World6
      World6
      2019-10-23
      同41005, 解决了吗?
      2019-10-23
      回复
    • 鬼谷纵横
      鬼谷纵横
      2019-10-28回复World6
      换了一种请求方式,后端代码改一下吧,这个我没用,代码不适用于我
      2019-10-28
      回复
    • 南部之星bbf
      南部之星bbf
      2019-12-07
      请教你后来用了什么方法呢?我也同样的41005
      2019-12-07
      回复
    • 鬼谷纵横
      鬼谷纵横
      2019-12-20回复南部之星bbf
      后端代码改一下就好了 请求接口写的有问题
      2019-12-20
      回复
    查看更多(1)
  • 2019-07-04

    sb.append(“Content-Disposition: form-data;name=“media”;filename=”" + imgUrl + “”\r\n");

    老哥 我复制的这里会报错啊。

    中文的引号是该怎么用呢

    2019-07-04
    赞同 1
    回复
  • 蓝海
    蓝海
    2021-02-22

    {"errMsg":"invokeService:ok","data":{"Response":{"Error":{"Code":"FailedOperation.UnKnowError","Message":"内部错误"}, 咋回事呢?求解!

    2021-02-22
    赞同
    回复
  • 17Read
    17Read
    2020-06-03

    可以直接云调用不需要后台也可以,他这个文章可以:

    https://mp.weixin.qq.com/s/o77bLIfCEkHq3acmqS4Tyw

    2020-06-03
    赞同
    回复
  • dennylu
    dennylu
    2020-03-25

    楼主,参考了你的代码,但我的图片是存在数据库中,取出来是一个url,没有相对地址,使用你这里的代码,图片的地址中的https://XXX,就变成了https:/XXX,少了一个"/",请问有办法解决吗?

    2020-03-25
    赞同
    回复
  • YAN
    YAN
    2019-10-14

    返回个这个什么意思啊

    {"errcode":-1,"errmsg":"system error hint: [R7oLmA02662372]"}  


    2019-10-14
    赞同
    回复 1
    • 南部之星bbf
      南部之星bbf
      2019-12-08
      你解决了吗
      2019-12-08
      回复
  • 和自己对话
    和自己对话
    2019-09-02

    为什么 我写本地图片和网络地址 都是报40015 错误

    2019-09-02
    赞同
    回复 4
    • 托马斯
      托马斯
      2019-09-28
      47001报错是什么意思?
      2019-09-28
      回复
    • 和自己对话
      和自己对话
      2019-09-29回复托马斯
      我查到的是47001是“解析JSON/XML内容错误”
      2019-09-29
      回复
    • 和自己对话
      和自己对话
      2019-09-29回复托马斯
      https://www.cnblogs.com/lonhon/p/9660726.html
      2019-09-29
      回复
    • 南部之星bbf
      南部之星bbf
      2019-12-08
      请问你解决了吗
      2019-12-08
      回复
  • 木木
    木木
    2019-08-22

    imgUrl 是本地图片文件吧,否则FileInputStream fis = new FileInputStream(imgUrl);这句会报错的,微信这个接口好像不支持网络图片安全检测

    2019-08-22
    赞同
    回复
  • Restrain。🍉
    Restrain。🍉
    2019-07-18

    老哥,{"errcode":41005,"errmsg":"media data missing hint: [04622756]"} 我一直提示这个错误-

    Content-Disposition:form-data;name="media";filename="image/fishing.jpg"
    Content-Type:application/octet-stream   这个是请求的参数

    2019-07-18
    赞同
    回复 2
    • 猎人
      猎人
      2019-07-18
      https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1433747234 参考微信返回码 这是图片路径问题
      2019-07-18
      回复
    • 托马斯
      托马斯
      2019-09-28回复猎人
      47001报错是什么意思?
      2019-09-28
      回复
  • 猎人
    猎人
    2019-07-11

    中文引号就试试转移吧  要不就用英文的

    2019-07-11
    赞同
    回复
登录 后发表内容