Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HTTP POST curl php时GDMS(Grandstream)API问题_Php_Api_Telephony - Fatal编程技术网

HTTP POST curl php时GDMS(Grandstream)API问题

HTTP POST curl php时GDMS(Grandstream)API问题,php,api,telephony,Php,Api,Telephony,我试图通过php中的curl向新的Grandstream API发送HTTP POST请求,每次都会收到相同的错误。我必须说,我目前能够成功地完成GET请求,但问题始于必须发送邮件的时候 $gdms_domain = "eu.gdms.cloud"; $timestamp = round(microtime(true)*1000); $params_data = array( 'access_token' => '*********',

我试图通过php中的curl向新的Grandstream API发送HTTP POST请求,每次都会收到相同的错误。我必须说,我目前能够成功地完成GET请求,但问题始于必须发送邮件的时候

$gdms_domain = "eu.gdms.cloud";
$timestamp = round(microtime(true)*1000);

$params_data = array(
        'access_token' => '*********',
        'client_id' => '*****',
        'client_secret' => '************',
        'timestamp' => $timestamp
);
$body_data = array(
        'pageSize' => "",
        'pageNum' => "",
        'order' => "",
        'type' => "",
        'orgId' => ""
);
$params = http_build_query($params_data);
$body = json_encode($body_data);
$signature = hash("sha256","&".$params."&");

$payload_data = array(
    'access_token' => $token,
    'signature' => $signature,
    'timestamp' => $timestamp
);
$payload = http_build_query($payload_data);

$ch = curl_init();
$options = array(
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => $body,
    CURLOPT_URL => 'https://'.$gdms_domain.'/oapi/v1.0.0/device/list'."?".$payload,
    CURLOPT_HTTPHEADER => array(
            "Content_type: application/json"
    )
);
curl_setopt_array($ch, $options);
$response = curl_exec($ch);

if(curl_error($ch)){
    echo 'Request Error:'.curl_error($ch);
}else{
    $response = json_decode($response);
    print_r($response);
    return $response;
}
curl_close($ch);
返回的错误为:

(
[data] => 
[msg] => bad signature
[retCode] => 40003
)
API文档在这里。我试图根据文档以两种可能的方式构建签名,并以不同的方式发送正文


谢谢

您应该将散列体添加到签名中

$body_signature  = hash("sha256",$body);
那么最后的签名应该是

$signature = hash("sha256","&".$params."&".$body_signature."&");