网站首页 文章专栏 curl请求--参数为多维数组的坑

curl请求--参数为多维数组的坑

编辑时间:2021-03-05 09:47:31 作者:苹果 浏览量:4160


    前言:项目今天突然曝出一个奇怪的报错:Array to string conversion ,根据日志跟踪居然是 在curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 这一行!


$data 为一维数组,还能正常请求; 但若$data为多维数组,就会报错。


正确办法:

对请求的用函数http_build_query() 做一次转换。


http_build_query() ,官方给出的说明为:使用给出的关联(或下标)数组生成一个经过 URL-encode 的请求字符串。


eg:

$data = array('name'=>'张三',
    'age'=>'18',
    'id_card'=>'411122199901011111',
    'msg'=>'hollow word');
echo http_build_query($data);// name=%E5%BC%A0%E4%B8%89&age=18&id_card=411122199901011111&msg=hollow+word


因此,只要将curl请求修改: curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));




其实,一般用接口跟别人对接时,你永远不会知道对方会传什么参数过来,最最不会出错的方式就是,跟对方约定,将传递的数据使用 json_encode() 转义成json,再使用 base64_encode转义。



    出自:何冰华个人网站

    地址:https://www.hebinghua.com/

    转载请注明出处


来说两句吧
最新评论