https://open.hikvision.com/docs/docId?productId=5c67f1e2f05948198c909700&version=%2Fb411af007cb4460eb543a692b30d0944&tagPath=%E5%8D%8F%E8%AE%AE%E6%A6%82%E8%BF%B0-%E6%8E%A5%E5%8F%A3-%E8%B0%83%E7%94%A8%E8%AE%A4%E8%AF%81#c0e8bd2f 中使用python 进行签名生成
时间: 2023-12-12 17:02:06 浏览: 165
根据海康威视开放平台的文档,使用Python进行签名生成的代码示例如下:
```python
import hmac
import hashlib
import base64
import urllib.parse
app_key = 'your_app_key' # 替换为你的app_key
app_secret = 'your_app_secret' # 替换为你的app_secret
url = 'https://openapi.hikvision.com/artemis/api/video/v1/cameras/previewURLs' # 替换为你的API请求URL
http_method = 'POST' # 请求方法
content_type = 'application/json' # 请求头中的Content-Type字段
accept = 'application/json' # 请求头中的Accept字段
date = 'Wed, 14 Jul 2021 09:23:25 GMT' # 请求头中的Date字段,注意需要按照RFC1123格式,否则会认证失败
body = '{"cameraIndexCode": "your_camera_index_code", "streamType": "0", "protocol": "rtsp"}' # 请求体
# 构造待签名字符串
str_to_sign = http_method + '\n' + content_type + '\n' + accept + '\n' + date + '\n' + url + '\n' + body + '\n'
# 使用app_secret对待签名字符串进行HMAC-SHA256签名
signature = hmac.new(app_secret.encode(), str_to_sign.encode(), hashlib.sha256).digest()
# 对签名结果进行Base64编码
signature_base64 = base64.b64encode(signature).decode()
# 构造Authorization头
authorization_header = 'HMAC-SHA256 ' + 'AppKey=' + app_key + ', ' + 'Timestamp=' + date + ', ' + 'Signature=' + signature_base64
# 构造请求头
headers = {
'Content-Type': content_type,
'Accept': accept,
'Authorization': authorization_header,
'Date': date
}
# 发起API请求
response = requests.post(url, headers=headers, data=body)
# 处理API响应
print(response.text)
```
其中,app_key和app_secret是你在海康威视开放平台注册应用后获取的认证信息,url是你要请求的API的URL,其他字段根据API文档中的要求填写。需要注意的是,Date字段需要按照RFC1123格式,否则会认证失败。最后将Authorization头和其他请求头一起添加到API请求中,即可完成API请求并处理响应。
阅读全文
相关推荐
![.rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)