php curl问题
像PHP调用API接口时 很多时候是会用到CURL 来提交的。具体的方法就不写了,相信大家都会。
这篇文章主要是解决提交的数据里同时包含多维数组和文件的解决方法
首先我们看下面这句代码
curl_setopt($ ch , CURLOPT_POSTFIELDS, http_build_query($data));
这句就是想API接口提交数据的主要代码了。但是如果 $data 里有文件的话,由于http_build_query的原因 API那边是接收不到文件的
那我们直接换成下面这句
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
发现多维数组又接收不到了
下面给出解决方法
自定义个方法将$data处理下(下面代码大家都能看懂,就不解释了)
function build_post_fields($data, $existingKeys = ”, &$returnArray = [])
{
if (($data instanceof CURLFile) or ! (is_array($data) or is_object($data)))
{
$returnArray[$existingKeys] = $data;
return $returnArray;
} else
{
foreach ($data as $key => $item)
{
build_post_fields($item, $existingKeys ? $existingKeys . “[$key]” : $key, $returnArray);
}
return $returnArray;
}
}
最后使用
curl_setopt($ch, CURLOPT_POSTFIELDS, build_post_fields($data));
就OK了
相关文章
本站已关闭游客评论,请登录或者注册后再评论吧~