php curl post请求出现提示Array to string conversion

通过curl对接口发起post请求的时候很少会遇到请求数据是二维数组的情况,一般情况下只需要按照正常的方式发送请求就可以了,可能的代码如下:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

$result = curl_exec($ch);

if ($result) {
    curl_close($ch);

    $res_data = json_decode($result, true);

    echo '<pre>';
    print_r($res_data);
    echo '</pre>';

} else {
    $error = curl_errno($ch);

    echo 'curl出错,错误码('.$error.')';

    curl_close($ch);
}

但是当请求的数据是$data是二维数组的时候,php就会提示Array to string conversion,这个时候需要使用函数http_build_query()来处理$data,调整后的代码为:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));

$result = curl_exec($ch);

if ($result) {
    curl_close($ch);

    $res_data = json_decode($result, true);

    echo '<pre>';
    print_r($res_data);
    echo '</pre>';

} else {
    $error = curl_errno($ch);

    echo 'curl出错,错误码('.$error.')';

    curl_close($ch);
}

这样提示信息就不会再出现了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容