html52.com
我爱小程序-开发者交流社区

内容安全检测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));



imgSecCheck


  1. media参数类型为form-data, 应该是指POST表单的头格式为 Content-Type: multipart/form-data

  2. 其实就是服务器端模拟文件上传功能,上传文件给微信服务器, 被上传的文件不支持URL,只能为本地图片,图片路径推荐绝对路径(只要能根据路径找到该文件即可,有的可以相对路径)

  3. PHP 5.5以上和以下使用的API方法不同

  4. 其实微信可以考虑支持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;

    }


网友回复

°不足为惧:

public function check_img(){

        $url = 'https://api.weixin.qq.com/wxa/img_sec_check?access_token=12_j1nlrQa29SUWYz_3OSEbfjc9vhduVcyu_MkR6VSLXjA86air3rw8xcCtSXeyU1qc3RyYVAR3IB2RLL3XHVYYLOKk5w-N917BgL9R-cILq2Zc0452WwWLoU6blBIxMJhzG7yYnhnROPOhABAYZY';

        $file = __DIR__ . '\640.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);

        dump($r);

    }

返回的

bool(false)


娇华:

传输的文本不可以是Unicode编码,要进行解码后再传输? 你好,这里需要开发者处理下把unicode转为utf-8(参考链接:https://www.jb51.net/article/70251.htm) 另外,form-data就是http协议里面的formdata哈

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

真正的个人免签约支付接口

云免签H5支付