秘钥标签验证-生成秘钥
1、出错地方
因为用转译后的编码生成签名秘钥导致请求一直失败;
解决办法:用原报文XML先 生成签名秘钥;传给接口用xml转译后;
public static string GetHttpPostByAdds(string Url, string sendXml, string custID) { //解决 SSL/TLS 安全通道问题 System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; //转译报文 string sendInfo = HttpUtility.UrlEncode(sendXml, Encoding.GetEncoding("utf-8")); string resultStr = string.Empty; try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url); request.Method = "POST"; request.Timeout = 10000; request.ContentType = "application/x-www-form-urlencoded"; //获取签名用原报文的 string signValue = GetSign(sendXml, "123456"); request.Headers.Add("serverName", "orderStatus"); request.Headers.Add("CustID", custID); request.Headers.Add("sign", signValue); string contentStr = $"serverName=orderStatus&CustID={custID}&sign={signValue}&content={sendInfo}";// request.Headers.Add("content", contentStr); byte[] data = Encoding.GetEncoding("utf-8").GetBytes(contentStr); request.ContentLength = data.Length; Stream myRequestStream = request.GetRequestStream(); myRequestStream.Write(data, 0, data.Length); myRequestStream.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));// resultStr = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); } catch (WebException ex) { var errorSr = new StreamReader(ex.Response.GetResponseStream()); resultStr = errorSr.ReadToEnd(); } return resultStr; } /// <summary> /// 获取签名 /// </summary> public static string GetSign(string content, string key) { string value = GetMd5(content + key); byte[] bytes = Encoding.GetEncoding("utf-8").GetBytes(value); return Convert.ToBase64String(bytes); } public static string GetMd5(string plaintextValue) { MD5 md = MD5.Create(); byte[] t = md.ComputeHash(Encoding.GetEncoding("utf-8").GetBytes(plaintextValue)); StringBuilder sb = new StringBuilder(); for (int i = 0; i < t.Length; i++) { sb.Append(t[i].ToString("x").PadLeft(2, '0')); } return sb.ToString(); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2020-07-07 SQL SERVER 2012密钥(序列码)