签名方法
php 生成签名的方法
````
protected $apiKey = "11223344556677889900";
/**
* 生成sign
* @param $data
* @return string
*/
private function getSign($data)
{
//去除sign参数
unset($data['sign']);
//数组排序
ksort($data);
//新增key参数
$data['key'] = $this->apiKey;
//生成json串
$data = json_encode($data);
//md5加密
return md5($data);
}
/**
* httpPost请求
* @param $postUrl
* @param $postData
* @return bool|int|string
*/
private function httpPost($postUrl, $postData)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $postUrl);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
if(!$postData){
return 'data is null';
}
if(is_array($postData))
{
$postData = json_encode($postData);
}
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postData);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_HTTPHEADER,array(
'Content-Type: application/json; charset=utf-8',
'Content-Length:' . strlen($postData),
'Cache-Control: no-cache',
'base64: true'
));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$res = curl_exec($curl);
$errorno = curl_errno($curl);
if ($errorno) {
return $errorno;
}
curl_close($curl);
return $res;
}
````
php请求api方法:
```
//请求接口参数数组
$data = [
"host" => "baidu.com",
"redirect" => "",
"startTime" => "2011-01-31",
"endTime" => "2022-07-19",
"limit" => 100,
"page" => 1,
"timespan" => time()
];
//生成sign
$sign = $this->getSign($data);
//新增sign参数
$data['sign'] = $sign;
//请求接口
$response = $this->httpPost('http://admin.301admin.com/api/v1/lists',$data);
var_dump(response );
```