根据官方给的文档:
https://open.dingtalk.com/document/robots/custom-robot-access
安全设置中我采用的是加签方式
获得签名
private string addSign(long timestamp)
{
string secret1 = sectret;
string stringToSign = timestamp + "\n" + secret1;
var encoding = new System.Text.ASCIIEncoding();
byte[] keyByte = encoding.GetBytes(secret1);
byte[] messageBytes = encoding.GetBytes(stringToSign);
using (var hmacsha256 = new HMACSHA256(keyByte))
{
byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);
return HttpUtility.UrlEncode(Convert.ToBase64String(hashmessage), Encoding.UTF8);
}
推送方法
public bool PushData(List<string> links, List<SubData> subDatas)
{
string message = null;
string[] strRevMessage = new string[4];
long timestamp = ((DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000);
string sign = addSign(timestamp);
string url1 = url + "×tamp=" + timestamp + "&sign=" + sign;
strRevMessage = SenMsg(url1, 消息类型, 消息内容);
sContent = "";
if (strRevMessage[1] == "ok")
{
return true;
}
else
{
return false;
}
}
private string[] SenMsg(string Url, string Msgtype, string sContent)
{
var json_req = new
{
msgtype = Msgtype,
text = new { content = sContent },
//at = new { isAtAll = true }(是否@所有人)
};
string jsonRequest = JsonConvert.SerializeObject(json_req);
string RevMsg = HttpPost(Url, jsonRequest);
JObject job = (JObject)JsonConvert.DeserializeObject(RevMsg);
string[] strRevMessage = new string[4];
strRevMessage[0] = job["errcode"].ToString();
strRevMessage[1] = job["errmsg"].ToString();
strRevMessage[2] = jsonRequest;
strRevMessage[3] = RevMsg;
return strRevMessage;
}
private string HttpPost(string url, string jsonRequest)
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.ContentType = "application/json;charset=utf-8";
req.Timeout = 20000;
byte[] bs = Encoding.UTF8.GetBytes(jsonRequest);
req.GetRequestStream().Write(bs, 0, bs.Length);
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
Stream stream = resp.GetResponseStream();
StreamReader streamReader = new StreamReader(resp.GetResponseStream(), Encoding.UTF8);
string responseContent = streamReader.ReadToEnd();
streamReader.Close();
resp.Close();
req.Abort();
return responseContent;
}
随手记录,希望能够帮到你