调整版PHP的CURL类(POST、GET、PUT、DELETE)
2016-11-07 06:53
260 查看
调整版PHP的CURL类(POST、GET、PUT、DELETE)
因为经常用到所以研究了下重新自己写了个比较完整的,至少满足自己平常的需求。
/**
* @param $URL 请求链接
* @param null $data 数据 array() string
* @param string $type 请求类型 POST GET PUT DELETE
* @param string $headers 头部信息
* @param string $data_type 返回数据类型 默认为json
* @return mixed
*/
function callInterfaceCommon($URL,$data=null,$type='POST',$headers="",$data_type='json'){
$ch = curl_init();
//判断ssl连接方式
if(stripos($URL, 'https://') !== false) {
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSLVERSION, 1);
}
$connttime=300; //连接等待时间500毫秒
$timeout = 15000;//超时时间15秒
$querystring = "";
if (is_array($data)) {
// Change data in to postable data
foreach ($data as $key => $val) {
if (is_array($val)) {
foreach ($val as $val2) {
$querystring .= urlencode($key).'='.urlencode($val2).'&';
}
} else {
$querystring .= urlencode($key).'='.urlencode($val).'&';
}
}
$querystring = substr($querystring, 0, -1); // Eliminate unnecessary &
} else {
$querystring = $data;
}
// echo $querystring;
curl_setopt ($ch, CURLOPT_URL, $URL); //发贴地址
//设置HEADER头部信息
// if($headers!=""){
// curl_setopt ($ch, CURLOPT_HTTPHEADER, $headers);
// }else {
// curl_setopt ($ch, CURLOPT_HTTPHEADER, array('Content-type: text/json'));
// }
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);//反馈信息
curl_setopt ($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); //http 1.1版本
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT_MS, $connttime);//连接等待时间
curl_setopt ($ch, CURLOPT_TIMEOUT_MS, $timeout);//超时时间
switch ($type){
case "GET" : curl_setopt($ch, CURLOPT_HTTPGET, true);break;
case "POST": curl_setopt($ch, CURLOPT_POST,true);
curl_setopt($ch, CURLOPT_POSTFIELDS,$querystring);break;
case "PUT" : curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS,$querystring);break;
case "DELETE":curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_POSTFIELDS,$querystring);break;
}
$file_contents = curl_exec($ch);//获得返回值
// echo time().'<br>';
$status = curl_getinfo($ch);
//dump($status);
curl_close($ch);
if($data_type=="json"||$data_type=="JSON")
{
return json_encode($file_contents);
}else
{
return $file_contents;
}
}
因为经常用到所以研究了下重新自己写了个比较完整的,至少满足自己平常的需求。
/**
* @param $URL 请求链接
* @param null $data 数据 array() string
* @param string $type 请求类型 POST GET PUT DELETE
* @param string $headers 头部信息
* @param string $data_type 返回数据类型 默认为json
* @return mixed
*/
function callInterfaceCommon($URL,$data=null,$type='POST',$headers="",$data_type='json'){
$ch = curl_init();
//判断ssl连接方式
if(stripos($URL, 'https://') !== false) {
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSLVERSION, 1);
}
$connttime=300; //连接等待时间500毫秒
$timeout = 15000;//超时时间15秒
$querystring = "";
if (is_array($data)) {
// Change data in to postable data
foreach ($data as $key => $val) {
if (is_array($val)) {
foreach ($val as $val2) {
$querystring .= urlencode($key).'='.urlencode($val2).'&';
}
} else {
$querystring .= urlencode($key).'='.urlencode($val).'&';
}
}
$querystring = substr($querystring, 0, -1); // Eliminate unnecessary &
} else {
$querystring = $data;
}
// echo $querystring;
curl_setopt ($ch, CURLOPT_URL, $URL); //发贴地址
//设置HEADER头部信息
// if($headers!=""){
// curl_setopt ($ch, CURLOPT_HTTPHEADER, $headers);
// }else {
// curl_setopt ($ch, CURLOPT_HTTPHEADER, array('Content-type: text/json'));
// }
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);//反馈信息
curl_setopt ($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); //http 1.1版本
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT_MS, $connttime);//连接等待时间
curl_setopt ($ch, CURLOPT_TIMEOUT_MS, $timeout);//超时时间
switch ($type){
case "GET" : curl_setopt($ch, CURLOPT_HTTPGET, true);break;
case "POST": curl_setopt($ch, CURLOPT_POST,true);
curl_setopt($ch, CURLOPT_POSTFIELDS,$querystring);break;
case "PUT" : curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS,$querystring);break;
case "DELETE":curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_POSTFIELDS,$querystring);break;
}
$file_contents = curl_exec($ch);//获得返回值
// echo time().'<br>';
$status = curl_getinfo($ch);
//dump($status);
curl_close($ch);
if($data_type=="json"||$data_type=="JSON")
{
return json_encode($file_contents);
}else
{
return $file_contents;
}
}
相关文章推荐
- PHP中使用CURL模拟发送GET,POST,PUT,DELETE请求
- PHP-网络请求 GET、POST、PUT、DELETE
- php利用curl发送 post get del put patch 请求
- CURL发送GET POST PUT DELETE 请求
- curl模拟post,get,put,delete
- curl模拟delete/put/post/get请求
- PHP发起get post put delete请求
- PHP面试题:HTTP中POST、GET、PUT、DELETE方式的区别
- PHP的curl实现get,post 和 cookie(几个实例)
- HTTP Request GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE Methods
- jax-rs(Java API for RESTful Web Services)实践教程 之二 —— get/post/put/delete/head
- REST应该放弃使用http头GET、POST、PUT和DELETE来表达操作
- php 模拟 post curl sock file_get_contents
- php的curl实现get和post的代码
- php的curl实现get和post的代码
- rest入门实践之二:get/post/put/delete
- php使用curl可以get 模拟post
- PHP的curl实现get,post和cookie(几个实例)
- Rest模式get,put,post,delete含义与区别(转)
- php中使用Curl、socket、file_get_contents三种方法POST提交数据