curl代码
<?php
/**
* Class CURL
* @desc 使用curl模拟heep request get、post、put、delete请求
* @author wangxuemin
*/
class CURL
{
private static $headerArray = array(
"Content-type:application/json;charset='utf-8'", // MIME类型、字符集
"Accept:application/json", // MIME类型
"Accept-Encoding:gzip", // 需要服务端支持gzip压缩,许多情形下这可以减少5到10倍的下载时间。
"Authorization:'values'" // 授权信息
);
public static function get($url = '', $data = [])
{
$params = http_build_query($data);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url . '?' . $params);
curl_setopt($curl, CURLOPT_HTTPHEADER, self::$headerArray);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_HEADER,false);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($curl);
curl_close($curl);
return json_decode(gzdecode($output),true); // gzdecode gzip解码
}
public static function put($url = '', $data = [])
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, self::$headerArray);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST,"PUT");
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($curl, CURLOPT_HEADER,false);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($curl);
curl_close($curl);
return json_decode(gzdecode($output),true);
}
public static function post($url = '', $data = [])
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, self::$headerArray);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,false);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($curl, CURLOPT_HEADER,false);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($curl);
curl_close($curl);
return json_decode(gzdecode($output),true);
}
public static function delete($url = '', $data = [])
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, self::$headerArray);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($curl, CURLOPT_HEADER,false);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($curl);
curl_close($curl);
return json_decode(gzdecode($output),true);
}
}
使用方法
// 模拟请求
$url = "http://www.yaf.com/index/curl";
var_dump(CURL::get($url, array('id' => 10, 'method' => 'get')));
echo '<br />';
var_dump(CURL::post($url, array('id' => 11, 'method' => 'post')));
echo '<br />';
var_dump(CURL::put($url, array('id' => 12, 'method' => 'put')));
echo '<br />';
var_dump(CURL::delete($url, array('id' => 13, 'method' => 'delete')));
接收处理方法
if($_SERVER['REQUEST_METHOD'] !== 'GET') {
$content = file_get_contents('php://input');
$data = (array)json_decode($content, true);
echo json_encode(array('method' => $_SERVER['REQUEST_METHOD'], 'data' => $data));
} else {
echo json_encode(array('method' => $_REQUEST['method'], 'id' => $_REQUEST['id']));
exit;
}
处理结果
array(2) { ["method"]=> string(3) "get" ["id"]=> string(2) "10" }
array(2) { ["method"]=> string(4) "POST" ["data"]=> array(2) { ["id"]=> int(11) ["method"]=> string(4) "post" } }
array(2) { ["method"]=> string(3) "PUT" ["data"]=> array(2) { ["id"]=> int(12) ["method"]=> string(3) "put" } }
array(2) { ["method"]=> string(6) "DELETE" ["data"]=> array(2) { ["id"]=> int(13) ["method"]=> string(6) "delete" } }
网友评论