LogicJake/WebMonitor

POST错误

Opened this issue · 1 comments

imhut commented

钉钉官方文档接口.php?msg={header}/{content},可以收到钉钉机器人推送,但是后台显示Exception: 监测到变化,但发送通知错误:Custom Exception: JSONDecodeError('Expecting value: line 1 column 1 (char 0)');
所以,最后会导致监控没有更新依然不停推送消息。。。

imhut commented

准确说应该是GET的一个错误,目前已经解决此问题,太难了。。。
具体哪一行看不到原文了,已经弄得有点凌乱了,简单说一下吧json.loads用法有点问题,换json.dumps就ok了。。。。
其实钉钉也比较简单集成,参考一下:

import time
import hmac
import hashlib
import base64
import urllib.parse
 
timestamp = str(round(time.time() * 1000))
secret = 'xxxx'
secret_enc = secret.encode('utf-8')
string_to_sign = '{}n{}'.format(timestamp, secret)
string_to_sign_enc = string_to_sign.encode('utf-8')
hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
sign = urllib.parse.quote(base64.b64encode(hmac_code))
# print(timestamp)
# print(sign)
 
 
import requests,json   #导入依赖库
headers={'Content-Type': 'application/json'}   #定义数据类型
webhook = 'https://oapi.dingtalk.com/robot/send?access_token=xxxx&timestamp='+timestamp+"&sign="+sign
#定义要发送的数据
#"at": {"atMobiles": "['"+ mobile + "']"
data = {
    "msgtype": "text",
    "text": {"content": '加个钉钉呗,不过有了get和post,无所谓了'},
    "isAtAll": True}
res = requests.post(webhook, data=json.dumps(data), headers=headers)   #发送post请求