这篇文章主要介绍了php curl操作API接口类,结合完整形式形式分析了php针对curl请求发送、获取、设置、关闭连接等操作封装技巧,需要的朋友可以参考下
本文实例讲述了php curl操作API接口类。分享给大家供大家参考,具体如下:
<?php
namespace curl;
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2017/6/16
* Time: 9:54
*/
class ApiClient
{
//请求的token
const token='token_str';
//请求url
private $url;
//请求的类型
private $requestType;
//请求的数据
private $data;
//curl实例
private $curl;
public $status;
private $headers = array();
/**
* [__construct 构造方法, 初始化数据]
* @param [type] $url 请求的服务器地址
* @param [type] $requestType 发送请求的方法
* @param [type] $data 发送的数据
* @param integer $url_model 路由请求方式
*/
public function __construct($url, $data = array(), $requestType = 'get') {
//url是必须要传的,并且是符合PATHINFO模式的路径
if (!$url) {
return false;
}
$this->requestType = strtolower($requestType);
$paramUrl = '';
// PATHINFO模式
if (!empty($data)) {
foreach ($data as $key => $value) {
$paramUrl.= $key . '=' . $value.'&';
}
$url = $url .'?'. $paramUrl;
}
//初始化类中的数据
$this->url = $url;
$this->data = $data;
try{
if(!$this->curl = curl_init()){
throw new Exception('curl初始化错误:');
};
}catch (Exception $e){
echo '<pre>';
print_r($e->getMessage());
echo '</pre>';
}
curl_setopt($this->curl, CURLOPT_URL, $this->url);
curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, 1);
//curl_setopt($this->curl, CURLOPT_HEADER, 1);
}
/**
* [_post 设置get请求的参数]
* @return [type] [description]
*/
public function _get() {
}
/**
* [_post 设置post请求的参数]
* post 新增资源
* @return [type] [description]
*/
public function _post() {
curl_setopt($this->curl, CURLOPT_POST, 1);
curl_setopt($this->curl, CURLOPT_POSTFIELDS, $this->data);
}
/**
* [_put 设置put请求]
* put 更新资源
* @return [type] [description]
*/
public function _put() {
curl_setopt($this->curl, CURLOPT_CUSTOMREQUEST, 'PUT');
}
/**
* [_delete 删除资源]
* delete 删除资源
* @return [type] [description]
*/
public function _delete() {
curl_setopt($this->curl, CURLOPT_CUSTOMREQUEST, 'DELETE');
}
/**
* [doRequest 执行发送请求]
* @return [type] [description]
*/
public function doRequest() {
//发送给服务端验证信息
if((null !== self::token) && self::token){
$this->headers = array(
'Client-Token:'.self::token,//此处不能用下划线
'Client-Code:'.$this->setAuthorization()
);
}
//发送头部信息
$this->setHeader();
//发送请求方式
switch ($this->requestType) {
case 'post':
$this->_post();
break;
case 'put':
$this->_put();
break;
case 'delete':
$this->_delete();
break;
default:
curl_setopt($this->curl, CURLOPT_HTTPGET, TRUE);
break;
}
//执行curl请求
$info = curl_exec($this->curl);
//获取curl执行状态信息
$this->status = $this->getInfo();
return json_decode($info);
}
/**
* 设置发送的头部信息
*/
private function setHeader(){
curl_setopt($this->curl, CURLOPT_HTTPHEADER, $this->headers);
}
/**
* 生成授权码
* @return string 授权码
*/
private function setAuthorization(){
$authorization = md5(substr(md5(self::token), 8, 24).self::token);
return $authorization;
}
/**
* 获取curl中的状态信息
*/
public function getInfo(){
return curl_getinfo($this->curl);
}
/**
* 关闭curl连接
*/
public function __destruct(){
curl_close($this->curl);
}
}
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php curl用法总结》、《PHP网络编程技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP数据结构与算法教程》及《PHP中json格式数据操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
沃梦达教程
本文标题为:php curl操作API接口类完整示例
基础教程推荐
猜你喜欢
- PHP实现Redis单据锁以及防止并发重复写入 2022-10-12
- 使用PHP开发留言板功能 2023-03-13
- laravel 解决多库下的DB::transaction()事务失效问题 2023-03-08
- 在Laravel中实现使用AJAX动态刷新部分页面 2023-03-02
- PHP获取MySQL执行sql语句的查询时间方法 2022-11-09
- PHP命名空间简单用法示例 2022-12-01
- php array分组,PHP中array数组的分组排序 2022-08-01
- thinkphp3.2.3框架动态切换多数据库的方法分析 2023-03-19
- laravel ORM关联关系中的 with和whereHas用法 2023-03-02
- PHP中的错误及其处理机制 2023-06-04