内容安全检测API的DEMO(imgSecCheck, msgSecCheck)
使用imgSecCheck, msgSecCheck这两个API的时候碰到一些雷,现在就分享下. msgSecCheck传输的文本不可以是Unicode编码,要进行解码后再传输, 否则返回的是 "内容正常,无违规内容" PHP DEMO: private function scantxt($url, $data) { $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_TIMEOUT, 500); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($curl, CURLOPT_URL, $url); $res = curl_exec($curl); curl_close($curl); return $res; } 调用: $data = ['content' => 'xxxxxxxxxxxxxxxxxxxxxxx']; scantxt($url, json_encode($data, JSON_UNESCAPED_UNICODE)); imgSecCheckmedia参数类型为form-data, 应该是指POST表单的头格式为 Content-Type: multipart/form-data 其实就是服务器端模拟文件上传功能,上传文件给微信服务器, 被上传的文件不支持URL,只能为本地图片,图片路径推荐绝对路径(只要能根据路径找到该文件即可,有的可以相对路径) PHP 5.5以上和以下使用的API方法不同 其实微信可以考虑支持BASE64,这样更简便. 5. API文章最下方的@, 其实可加可不加, 不加的时候微信也鉴别( @意思是上传的为图片) private function upimg($url) { $file = __DIR__ . '/123.jpg'; $cfile = curl_file_create($file, 'image/jpg', '@testpic'); //这里硬编码了,自己修改 $imgdata = array('media' => $cfile); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data')); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true); // stop verifying certificate curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $imgdata); $r = curl_exec($curl); curl_close($curl); return $r; }