/**
* 以post方式提交xml到對應的接口url
* @param $url
* @param $method
* @param $data
* @param int $timeout
* @return mixed
*/
public function do_curl($url, $method='get', $postData='',$timeout = 30)
{
$curl = curl_init(); //初始化
/*支持SSL 不驗證CA根驗證*/
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
/*重定向跟隨*/
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false);
//設置http驗證方法
curl_setopt($curl,CURLOPT_HTTPAUTH,CURLAUTH_BASIC);
//超時
curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);
//設置curl_exec獲取的信息的返回方式
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
$header = [
"Content-Type:application/json;charset=utf-8;",
"Connection: keep-alive;",
];
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
switch (strtolower($method)) {
case "post":
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($postData));
break;
case "put":
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($postData));
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($curl, CURLOPT_URL, $url);
break;
case "delete":
curl_setopt($curl, CURLOPT_URL, $url . '?' . http_build_query($postData));
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'DELETE');
break;
case "get":
curl_setopt($curl, CURLOPT_URL, $url . '?' . http_build_query($postData));
break;
case "new_get":
curl_setopt($curl, CURLOPT_URL, $url . "?para=" . urlencode(json_encode($postData)));
break;
default:
return [
'status'=>0,
'msg'=>'不支持的HTTP方式'
];
break;
}
$result = curl_exec($curl);
curl_close($curl);
return json_decode($result,true);
}
/**
* @param $url 請求網址
* @param bool $params 請求參數
* @param int $ispost 請求方式
* @param int $https https協議
* @return bool|mixed
*/
public static function curl($url, $params = false, $ispost = 0, $https = 0)
{
$httpInfo = array();
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36');
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
if ($https) {
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 對認證證書來源的檢查
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // 從證書中檢查SSL加密算法是否存在
}
if ($ispost) {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_URL, $url);
} else {
if ($params) {
if (is_array($params)) {
$params = http_build_query($params);
}
curl_setopt($ch, CURLOPT_URL, $url . '?' . $params);
} else {
curl_setopt($ch, CURLOPT_URL, $url);
}
}
$response = curl_exec($ch);
if ($response === FALSE) {
//echo "cURL Error: " . curl_error($ch);
return false;
}
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$httpInfo = array_merge($httpInfo, curl_getinfo($ch));
curl_close($ch);
return $response;
}
/**
* 以post方式提交xml到對應的接口url
* @param $xml
* @param $url
* @param int $second
* @return mixed
*/
public function postXmlCurl($url,$xml,$second = 30)
{
$ch = curl_init();
// 設置超時
curl_setopt($ch, CURLOPT_TIMEOUT, $second);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);//嚴格校驗
// 設置header
curl_setopt($ch, CURLOPT_HEADER, false);
// 要求結果爲字符串且輸出到屏幕上
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// post提交方式
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
// 運行curl
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
php 常用的幾個curl封裝,包括GET/POST/JSON,HTTPS等
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.