namespace app\common\service;
class CurlService //post 或 get 请求第三方接口
public function curl_http($url, $isPostRequest = false, $data = [], $header = [], $certParam = [])
curl_setopt($curlObj, CURLOPT_POST, 1);
curl_setopt($curlObj, CURLOPT_POSTFIELDS, http_build_query($data));
if (!empty($data) && is_array($data)) {
foreach ($data as $k => $v) {
$tmpArr[] = $k . '=' . $v;
$getParamStr = implode('&', $tmpArr);
$url .= strpos($url, '?') !== false ? '&' . $getParamStr : '?' . $getParamStr;
curl_setopt($curlObj, CURLOPT_URL, $url);
if (strpos($url, 'https') !== false) {
if (!empty($certParam) && isset($certParam['cert_path']) && isset($certParam['key_path'])) {
curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curlObj, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($curlObj, CURLOPT_SSLCERTTYPE, 'PEM');
curl_setopt($curlObj, CURLOPT_SSLCERT, $certParam['cert_path']);
curl_setopt($curlObj, CURLOPT_SSLKEYTYPE, 'PEM');
curl_setopt($curlObj, CURLOPT_SSLKEY, $certParam['key_path']);
curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curlObj, CURLOPT_SSL_VERIFYHOST, 0);
if (isset($_SERVER['HTTP_USER_AGENT'])) {
curl_setopt($curlObj, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($curlObj, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curlObj, CURLOPT_AUTOREFERER, 1);
curl_setopt($curlObj, CURLOPT_TIMEOUT, 30);
curl_setopt($curlObj, CURLOPT_HEADER, 0);
curl_setopt($curlObj, CURLOPT_HTTPHEADER, $header);
curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curlObj);
if (curl_errno($curlObj)) {
$result = 'error: ' . curl_error($curlObj);
测试
$url = 'https://apis.map.qq.com/ws/place/v1/suggestion';
$client = new CurlService();
$result = $client->curl_http($url,false,$data);