在使用PHP开发项目的时候,经常会调用第三方的接口,这个时候就需要使用到PHP的CURL来请求第三方接口。下面是POST和GET的请求方法。

//PHP CURL POST请求
public function post($url, $param, $post_file = false)
{
  $oCurl = curl_init();
  if (stripos($url, "https://") !== FALSE) {
    curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($oCurl, CURLOPT_SSLVERSION, 1);
  }
  if (is_string($param) || $post_file) {
    $strPOST = $param;
  } else {
    $aPOST = array();
    foreach ($param as $key => $val) {
      $aPOST[] = $key . "=" . urlencode($val);
    }
    $strPOST = join("&", $aPOST);
  }
  $headers = array('content-type: application/x-www-form-urlencoded;charset=utf-8');
  curl_setopt($oCurl, CURLOPT_HTTPHEADER, $headers);
  if (defined('CURLOPT_IPRESOLVE') && defined('CURL_IPRESOLVE_V4')) {
    curl_setopt($oCurl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
  }
  curl_setopt($oCurl, CURLOPT_URL, $url);
  curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($oCurl, CURLOPT_POST, true);
  curl_setopt($oCurl, CURLOPT_POSTFIELDS, $strPOST);
  $sContent = curl_exec($oCurl);
  $aStatus  = curl_getinfo($oCurl);
  curl_close($oCurl);
  if (intval($aStatus["http_code"]) == 200) {
    return $sContent;
  } else {
    return false;
  }
}
//PHP CURL GET请求
public function get($url)
{
  $oCurl = curl_init();
  if (stripos($url, "https://") !== FALSE) {
    curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($oCurl, CURLOPT_SSLVERSION, 1);
  }
  if (defined('CURLOPT_IPRESOLVE') && defined('CURL_IPRESOLVE_V4')) {
    curl_setopt($oCurl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
  }
  curl_setopt($oCurl, CURLOPT_URL, $url);
  curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1);
  $sContent = curl_exec($oCurl);
  $aStatus  = curl_getinfo($oCurl);
  curl_close($oCurl);
  if (intval($aStatus["http_code"]) == 200) {
    return $sContent;
  } else {
    return false;
  }
}