目录
需求背景
公司技术架构整理,java做服务端,php做业务端.所有涉及到的非业务端接口均由java提供网关接口.
于是资源管理部分的oss 就需要用php来调用java接口.
curl封装函数
这是正常封装的post函数.php版本从5.5-7.2 版本更替时修改过一次
<?php
/**
* HTTP POST请求
* @param string $url 请求的URL
* @param array $data 请求的数据
* @throw UserException
* @return string|throw
*/
function post($url,$data, $headers = [])
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");//3.请求方式
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
if(is_array($headers) && count($headers) > 0){
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
}
$response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if(!$response){
throw new UserException("请求失败,未知错误!", $status);
}
if ($status == 200) {
return $response;
} else {
throw new UserException("请求失败,内容:" . $response, $status);
}
}
?>
php <= 5.5 发送文件写法
PHP5.5 以前的发送文件的写法跟 5.5之后的写法有部分出入
<?php
$url = "http://www.xxxx.com/upload";// 示例接口请求地址
$data = array(
"upload" => "@/mnt/d/home/www/business-platform/uploads/2020/01/04/timg.jpg"
);
$return = post($url,$data);// 该封装函数在 ↑↑↑↑↑↑↑↑ 上面
print_r($return);
php>5.5 / 7 发送文件方式
php5.5之后就弃用了 @ 定位资源. 改用CURLFILE 对象 , 来封装资源
具体用法文尾付语法链接
<?php
$url = "http://www.xxxx.com/upload";// 示例接口请求地址
$localPath= "/mnt/d/home/www/business-platform/uploads/2020/01/04/timg.jpg";
$params = [
'file'=>new \CURLFILE($localPath),
];
$return = post($url,$params);// 该封装函数在 ↑↑↑↑↑↑↑↑ 上面
print_r($return);