curl封装

<?php
/*********
*
*@author zeo
*@date 2016-08-13
**********/
Class MyCurl{
private static $url = ''; //url
private static $oriUrl = ''; //referer url
private static $data = array(); //发送的数据
private static $method = ''; //访问方式,默认get

public static function sendData($url,$data=array(),$method='get'){
if(!$url)exit('url is null');
self::$url = $url;
self::$method = $method;
$urlArr = parse_url($url);
self::$oriUrl = $urlArr['scheme'].'://'.$urlArr['host'];
self::$data = $data;
if(!in_array(
self::$method,
array('get','post','put','delete')
)
){
exit('error request method type');
}
$func = self::$method.'Request';
return self::$func(self::$url);
}

/**********
*
*基础发起curl请求函数
*@param int $is_post 是否是post请求
*
*/
private function doRequest($is_post = 0){
$ch = curl_init(); //初始化curl
curl_setopt($ch, CURLOPT_URL, self::$url); //抓取指定网页
curl_setopt($ch, CURLOPT_AUTOREFERER, true); // 来源一定要设置成来自本站
curl_setopt($ch, CURLOPT_REFERER, self::$oriUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //要求结果为字符串且输出到屏幕上
if($is_post == 1)curl_setopt($ch, CURLOPT_POST, $is_post); //post提交方式
if(!empty(self::$data)){
self::$data = self::dealPostData(self::$data);
curl_setopt($ch, CURLOPT_POSTFIELDS, self::$data);
}
$data = curl_exec($ch); //运行curl
curl_close($ch);
return $data;
}


/**
* 发起get请求
*/
public function getRequest() {
return self::doRequest(0);
}
/**
* 发起post请求
*/
public function postRequest() {
return self::doRequest(1);
}

/**
* 处理发起非get请求的传输数据
*
* @param array $postData
*/
public function dealPostData($postData) {
if (!is_array($postData)) exit('post data should be array');
foreach ($postData as $k => $v) {
$o .= "$k=" . urlencode($v) . "&";
}
$postData = substr($o, 0, -1);
return $postData;
}
/**
* 发起put请求
*/
public function putRequest($param) {
return self::doRequest(2);
}


/**
* 发起delete请求
*/
public function deleteRequest($param) {
return self::doRequest(3);
}

}
/* $curl = new MyCurl('http://www.jumei.com',array(), 'get');
$res = $curl->send(); */
$res = MyCurl::send('http://www.ipip.net/ip.html',array('ip' => '61.142.206.145'),'post');

var_dump($res);die();
//考虑到可能会有循环调用的可能和高并发,为了减少内存堆的不必要消耗,我只对客户端调用提供静态方法。为了类的单一职责,MyCurl只做发请求和返回data的作用,对返回数据的处理交给其他代码。

转载于:https://www.cnblogs.com/zeoblog/p/5807616.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值