curl请求的get.post.put.delete对接其他系统接口方法
class HttpCurl
{
//控客云平台的appid
private $appId = xxxxxx;
//控客云平台的appkey
private $appKey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxx'; //控客接口请求地址
protected $url = 'https://xxxxxxxxxxx/1.0/';
//接口请求要求host必须为api.developer.hijaytech.com
protected $host = 'api.developer.hijaytech.com'; //设置的接口请求头信息集合
protected $headerArr = '';
protected $pragma = 'no-cache';
protected $accept = 'application/json';
protected $contentType = 'application/json'; public function __construct()
{
$this->setHeader();
} /**
* 设置请求接口的头信息,开发文档中的一些固定的头信息参数
*/
protected function setHeader()
{
$arr = array(
'Host:' . $this->host,
'Pragma:' . $this->pragma,
'Accept:' . $this->accept,
'Content-Type:' . $this->contentType,
'appId:' . $this->appId,
'appKey:' . $this->appKey,
);
$this->headerArr = $arr;
} /**
* 接口的请求方法
* @param string $url 接口的具体访问地址
* @param array $data 请求数据 默认是get方式请求。为空数组
* @param string $method 接口的请求方式post,get,delete,put
* @param array $header 接口的请求头,拓展,在默认固定的基础上可以再添加
* @return array 数据结果集合array(
* 'res' => $res, //请求状态是失败还是成功
* 'mes' => $mes, //请求失败的错误信息
* 'data' => $data //请求失败对应的数据
* );
*/
protected function curlRequest($url, $data = array(), $method = 'post', $header = array())
{ //初始化curl_init()
$ch = curl_init();
//设置请求的url
curl_setopt($ch, CURLOPT_URL, $url);
//设置是否接受返回结果
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 显示返回的Header区域内容
curl_setopt($ch, CURLOPT_HEADER, false); //设置端口号
curl_setopt($ch, CURLOPT_PORT, 4432); //https请求时会要求验证证书(ssl证书)
// $sslPath = ''; // $ssl = substr($url, 0, 8) == 'https://' ? true : false;
// if($ssl){
// curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,true);
// curl_setopt($ch,CURLOPT_CAINFO,$sslPath);
// curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);
// }else{
// curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); //这个是重点,跳过证书
// curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在
// }
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //这个是重点,跳过证书
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在 //根据不同的请求方式设置对应的参数
switch ($method) {
case 'get':
curl_setopt($ch, CURLOPT_HTTPGET, true);
break;
case 'post':
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
break;
case 'delete':
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
break;
case 'put':
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
break;
default :
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
break;
} //自定义请求头信息
if (count($header) <= 0) {
curl_setopt($ch, CURLOPT_HTTPHEADER, $this->headerArr);
} else {
$headers = $this->headerArr;
$headerArr = array_merge($headers, $header);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headerArr);
}
//返回一个json数据
$result = curl_exec($ch); if (curl_error($ch)) {
$resArr = $this->returnRes('fail', curl_error($ch), $data);
curl_close($ch);
return $resArr;
}
curl_close($ch); //将返回数据格式化为数组形式
$resData = json_decode($result, true); if(isset($resData['error_code'])&&$resData['error_code']!==0){
$resArr = $this->returnRes('fail', $resData['error_msg'], $data);
return $resArr;
} //统一返回的数据格式
$resArr = $this->returnRes('success', '', $resData);
return $resArr;
} public function returnRes($res, $mes, $data)
{
return array(
'res' => $res, //请求状态是失败还是成功
'mes' => $mes, //请求失败的错误信息
'data' => $data //请求失败对应的数据
);
} }
curl请求的get.post.put.delete对接其他系统接口方法的更多相关文章
- PHP 之CURL请求封装GET、POST、PUT、DELETE
/** * @Description: curl请求 * @Author: Yang * @param $url * @param null $data * @param string $method ...
- php curl请求和获取接口数据
curl请求和获取接口数据 class ToolModel{ /** * [http 调用接口函数] * @Author GeorgeHao * @param string $url [接口地址] * ...
- curl请求的url中含有空格
curl请求的url中含有空格时(例如rul的参数是sql查询语句,url=www.tets.com/query.php?sql=select * from t1),curl_easy_perform ...
- Curl 请求数据多’1‘
今天做curl请求时遇到一个问题 数据请求回来,无缘无故多了1 加上这一行代码就就可以了:curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
- php(curl请求)测试接口案例
请求测试接口,如下: $data = [']; $result = curlrequest($apiUrl,$data); ){ echo json_encode($result); }else{ e ...
- php curl请求回来的中文为乱码
在浏览器访问回来的编码格式是正常的,但是从php curl 请求过来的确实乱码,之前也试过这个函数好像不行,今天吧最后一个参数换了,简单粗暴,可以了mb_convert_encoding($res, ...
- php-fpm nginx 使用 curl 请求 https 出现 502 错误
用php curl请求https的url出现502错误,请求帮忙解决. PHP版本:5.6.7Nginx版本:1.8.0 代码如下: $ch = curl_init(); curl_setopt($c ...
- php之接口内curl请求其他接口
今天遇到一个需要写curl的需求,情况是这样的: 同一应用的A系统(购物系统),B系统(答题系统)相互独立,用户数据全部存在于A系统的数据库中, 现在处于B系统的某项操作中,需要在B系统中验证当前请求 ...
- PHP使用curl请求https站点的常见错误及解决方案
使用curl请求http站点和https站点最大的不同就是https站点有证书验证这一环节,如果证书验证不通过则无法发起请求,不管是请求什么类型的站点遇到问题时先把错误码打印出来看一下,打印错误码的代 ...
随机推荐
- WPF 集合分组排序
<Window x:Class="ViewExam.MainWindow" xmlns="http://schemas.microsoft.com/w ...
- MVC 身份验证和异常处理过滤器
:在Global中注册为全局过滤器,应用于所有的Controller的Action 参数类均继承自ControllerContext,主要包含属性请求上下文.路由数据.结果 using FilterE ...
- WPF MvvmLight简单实例(1) 页面导航
原文:WPF MvvmLight简单实例(1) 页面导航 实现了那些功能,先看看截图: 操作描述: 在程序运行后,点击“Load”按钮,页面会加载PageOne,点击PageOne页面中的“Next” ...
- ARM中 __IO的作用解析
__IO在头文件中预定义 #define __IO volatile volatile 影响编译器编译的结果, 指出:volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要 ...
- Windows NT WinLogon Notify
在NT系列Windows操作系统中,恶意软件可以通过关联Winlogon特定的事件来使自身被启动,如Lock,Logoff,Logon,Shutdown,StartScreenSaver,StartS ...
- 2017-01-11&2017-01-12
江门警情协作需求. 连续两天搞到超过十点半,所以今天来一并写一下这两天的记录吧. 1.11号明显的进展算是把通讯调通了,还有重新把协作请求的界面按一开始的设想嵌到主界面中. 2.今天12号貌似进展要大 ...
- 启动组织重整 Marvell追求创新文化
最近接任Marvell技术长的Neil Kim正是该公司亟需的人才——他在今年四月加入后,预计将为Marvell带来正面.积极的改革契机,有机会让该公司彻底改头换面... 迈威尔科技(Marvell) ...
- 恢复Win10照片查看器
批处理文件: @echo off&cd\&color 0a&cls echo 恢复Win10照片查看器 reg add "HKLM\SOFTWARE\Microsof ...
- 零元学Expression Blend 4 - Chapter 45 ListBox里的物件不能换行吗?
原文:零元学Expression Blend 4 - Chapter 45 ListBox里的物件不能换行吗? ListBox里的排列不是垂直就是水平,觉得这样的排列很枯燥乏味吗? 想要它变聪明吗? ...
- oracle 12c连接pdb
12c中,如何连接pluggable database: 使用默认的service连接pdb,创建pdb之后,在监听中自动添加以pdb为名的service: 用户在cluster中创建service, ...