我用php curl对接华为物联网的https接口,我用“php + 文件名”的形式执行php代码可以正确请求。但是我把代码放在apache下,用浏览器访问就不能请求接口

*若价格不公道,可以让提问者在平台追加赏金哦,平台是您利益的保证

已完成
我用php curl对接华为物联网的https接口,我用“php + 文件名”的形式执行php代码可以正确请求。但是我把代码放在apache下,用浏览器访问就不能请求接口-130****92
130****92 4年前发布
悬赏:30.0 元

问题详情:分类: PHP-linux

<?php
$urlCmd='https://49.4.92.191:8743/iocm/app/cmd/v1.4.0/deviceCommands'; //命令下发地址
$urlToken='https://49.4.92.191:8743/iocm/app/sec/v1.1.0/refreshToken'; //刷新token地址
$arrCmd= array('Content-Type: application/json','app_key: 0IFH3fH9GlNRnNLeEv2kp07JYqca','Authorization: Bearer 1bbd5bda7cb490821b2a693c1d6e452'); //https header
$arrToken= array('Content-Type: application/json'); //https header
$dataCmd= '{"deviceId": "46ef353c-9d45-4c2c-8b99-dcf563ebbea9","command": {"serviceId": "gps_speed","method": "off_on","paras": {"kg": "1"}}}'; //https body
$dataToken= '{ "appId": "0IFH3fH9GlNRnNLeEv2kp07JYqca","secret": "EBrdcxlz2sW12lxm5vCxYynrPwAa","refreshToken": "e0f0fa38f7f0c358aaccc981b12eb97e"}'; //https body

/***************************************************************************************************************************************/

function http1($url, $data = NULL, $json = false, $arr) //封装curl
{
$curl=curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER,0); //不检测服务器的证书是否由正规浏览器认证过的授权CA颁发的
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); //不检测服务器的域名与证书上的是否一致
curl_setopt($curl, CURLOPT_SSLCERTTYPE, 'PEM'); //证书类型
curl_setopt($curl, CURLOPT_SSLCERT,"/root/sh/client.pem"); //证书路径

if (!empty($data)) {
if($json && is_array($data)){
$data=json_encode($data);}
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); //发送https body
if($json){
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_HTTPHEADER,$arr); //发送https header
}
}

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$res = curl_exec($curl); //执行请求
var_dump($res); //打印 请求信息
$errorno = curl_errno($curl);
if ($errorno) {
return array('errorno' => false, 'errmsg' => $errorno); //返回错误信息
}

curl_close($curl);

return json_decode($res, true);

}

/*******************************************************************************************************/

$conn=mysqli_connect("localhost","root","123456","token"); //打开数据库
mysqli_set_charset($conn,"utf8");
if(!$conn)
{
die('NOT'.mysql_error());
}

/****************************************************************************************************************/

$sql = "SELECT * FROM refreshToken"; //从数据库中取出refreshtoken
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_assoc($result);
//var_dump($result);
$dataToken = json_decode($dataToken,true); //更新refreshToken
$dataToken["refreshToken"]= $row["refreshToken"];
$dataToken = json_encode($dataToken);
/****************************************************************************************************************/

$sendToken= http1($urlToken,$dataToken,1,$arrToken); //请求令牌接口,获取token
$Authorization = $sendToken["accessToken"];
$refreshToken = $sendToken["refreshToken"];
$arrCmd[2]= "Authorization: Bearer "."$Authorization";
$sendCmd = http1($urlCmd,$dataCmd,1,$arrCmd); //请求命令下发接口,下发命令
if($refreshToken)
mysqli_query($conn,"UPDATE refreshToken SET ID=1 ,refreshToken= '{$refreshToken}' "); //在数据库中更新refreshToken

/*******************************************************************************************************************/
mysqli_close($conn);

var_dump($dataToken);
var_dump($sendToken); //返回结果

?>



*若价格不公道,可以让提问者在平台追加赏金哦,平台是您利益的保证。你觉得当前的价格如何呢,奉上您珍贵的一票吧

虚高0人次 适中0人次 偏低0人次

分享海报会更快解决你的问题哦!分享海报

此处可发布评论

评论(0

暂无评论,快来写一下吧
客服QQ 1913284695