欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

PHP Request工具类

程序员文章站 2022-06-08 10:34:29
...

利用PHP进行HTTP请求是很常见的事情了,大家都知道用CURL来进行操作,但是CURL函数使用起来配置是很多的,很多人往往只有用到一小部分常用选项,这里我做了一个封装 主要功能 POST,GET COOKIE支持 URLENCODE支持(针对GET请求) 由于是静态方法,直接::调用即

利用PHP进行HTTP请求是很常见的事情了,大家都知道用CURL来进行操作,但是CURL函数使用起来配置是很多的,很多人往往只有用到一小部分常用选项,这里我做了一个封装
主要功能
POST,GET
COOKIE 支持
URLENCODE 支持(针对GET请求)

由于是静态方法,直接 :: 调用即可

 * @license MIT
 * Class Request 网络工具类
 */
class Request
{
	/**
	 * HTTP GET 请求
	 * @param string $url 请求地址
	 * @param array $data 请求数据
	 * @param null $cookie COOKIE
	 * @param null $cookiefile COOKIE 请求所用的COOKIE文件位置
	 * @param null $cookiesavepath 请求完成的COOKIE保存位置
	 * @param bool $encode 是否对请求参数进行 urlencode 处理
	 * @return mixed
	 * @throws Exception
	 */
	public static function get($url, $data = array(), $cookie = null, $cookiefile = null,$cookiesavepath = null, $encode = true)
	{
		//初始化句柄
		$ch = curl_init();
		//处理GET参数
		if(count($data)>0){
			$query = $encode?http_build_query($data):urldecode(http_build_query($data));
			curl_setopt($ch, CURLOPT_URL, $url . '?' . $query);
		}else{
			curl_setopt($ch, CURLOPT_URL, $url);
		}
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36');
		//设置cookie
		if (isset($cookie)) curl_setopt($ch, CURLOPT_COOKIE, $cookie);
		//设置cookie请求文件
		if (isset($cookiefile)){
			if(!is_file($cookiefile)) throw new Exception('Cookie文件不存在');
			curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile);
		}
		//设置cookie保存路径
		if(isset($cookiesavepath)) curl_setopt($ch,CURLOPT_COOKIEJAR,$cookiesavepath);
		//执行请求
		$resp = curl_exec($ch);
		//关闭句柄,释放资源
		curl_close($ch);
		return $resp;
	}

	/**
	 * HTTP POST 请求
	 * @param string $url 请求地址
	 * @param array $data 请求数据
	 * @param null $cookie 请求COOKIE
	 * @param null $cookiefile 请求时cookie文件位置
	 * @param null $cookiesavepath 请求完成的COOKIE保存位置
	 * @return string
	 * @throws Exception
	 */
	public static function post($url, $data = array(), $cookie = null, $cookiefile = null,$cookiesavepath = null)
	{
		//初始化请求句柄
		$ch = curl_init();
		//参数设置
		curl_setopt($ch, CURLOPT_URL, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt($ch,CURLOPT_POST,1);
		curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
		curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36');
		//cookie设置
		if (isset($cookie)) curl_setopt($ch, CURLOPT_COOKIE, $cookie);
		//请求cookie设置
		if (isset($cookiefile)){
			if(!is_file($cookiefile)) throw new Exception('Cookie文件不存在');
			curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile);
		}
		//设置cookie保存路径
		if(isset($cookiesavepath)) curl_setopt($ch,CURLOPT_COOKIEJAR,$cookiesavepath);
		$resp=curl_exec($ch);
		curl_close($ch);
		return $resp;
	}
}