服务器请求接口CURL方法封装

/**

*/

 

namespace App\Utils;

 

use Illuminate\Support\Facades\Config;

 

class RPC

{

/**

* @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;

}

 

public static function apihttp($url, $method='GET', $data=null)

{

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_TIMEOUT, 2);

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);

if($method != 'GET' && $data != null) {

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));

}

$info = curl_exec($ch);

curl_close($ch);

 

$jsonInfo = @json_decode($info, true);

if(empty($jsonInfo)) {

\Log::alert($info);

}

 

return $info;

}

public static function curl_request($url,$post='',$cookie='', $returnCookie=0){

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $url);

curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)');

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);

curl_setopt($curl, CURLOPT_AUTOREFERER, 1);

curl_setopt($curl, CURLOPT_REFERER, "http://XXX");

if($post) {

curl_setopt($curl, CURLOPT_POST, 1);

curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));

}

if($cookie) {

curl_setopt($curl, CURLOPT_COOKIE, $cookie);

}

curl_setopt($curl, CURLOPT_HEADER, $returnCookie);

curl_setopt($curl, CURLOPT_TIMEOUT, 10);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

$data = curl_exec($curl);

if (curl_errno($curl)) {

return curl_error($curl);

}

curl_close($curl);

if($returnCookie){

list($header, $body) = explode("\r\n\r\n", $data, 2);

preg_match_all("/Set\-Cookie:([^;]*);/", $header, $matches);

$info['cookie'] = substr($matches[1][0], 1);

$info['content'] = $body;

return $info;

}else{

return $data;

}

}

public static function http_post($url, $data) {

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,$url);

curl_setopt($ch, CURLOPT_HEADER,0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

$res = curl_exec($ch);

curl_close($ch);

return $res;

}


 

/**多进程http

*

* @param $url

* @param $data

*

* @return bool

*/

public static function http_multi_post($url, $data)

{

$mh = curl_multi_init();

foreach ($data as $i => $value) {

$conn[$i] = curl_init($url);

curl_setopt($conn[$i], CURLOPT_HEADER, 0);

curl_setopt($conn[$i], CURLOPT_RETURNTRANSFER, 1);

curl_setopt($conn[$i], CURLOPT_POST, 1);

curl_setopt($conn[$i], CURLOPT_POSTFIELDS, $value);

 

curl_multi_add_handle($mh, $conn[$i]);

}

$active = null;

do {

curl_multi_exec($mh, $running);

curl_multi_select($mh);

} while ($running > 0);

foreach ($data as $i => $item) {

$res[$i] = curl_multi_getcontent($conn[$i]);

curl_multi_remove_handle($mh, $conn[$i]);

}

curl_multi_close($mh);

return true;

}

}

你可能感兴趣的:(laravel)