网站首页 文章专栏 curl请求--参数为多维数组的坑
$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转义。
转载请注明出处