一個sign演算法 原理很簡單
代碼如下
public string GetSig(string request, string body)
{
string result = request + body;
result = web.UrlDecode(result, Encoding.UTF8);
UrlHelper url = new UrlHelper(result);
result = url.Sort();
debug.WriteLine(result);
result = result.Replace("&", "");
debug.WriteLine(result);
result = Encoding.UTF8.GetBytes(result).Md5().ToHex().ToLower();
return result;
}
當body引數里面包含URL地址的時候 服務器提示簽名錯誤
例如: referer=http://https://bbs.csdn.net/topics/new?forum_id=CSharp&id=1
經過除錯 原因是引數里面包含了&字符 導致的分割錯誤
請教各位大神 應該如何處理
uj5u.com熱心網友回復:
你這引數forum_id值就是CSharp&id=1,而不是有forum_id跟id?uj5u.com熱心網友回復:
你理解錯我的意思了, 我是意思是 原始url像這樣 http://www.xxx.com/api/r/emotion/package/list?app=1.1&client=android&referer=http://https://bbs.csdn.net/topics/new?forum_id=CSharp&id=1
當referer引數里面包含了&符號的時候 簽名計算錯誤,我把&符號替換成%26也不對
uj5u.com熱心網友回復:
不知道你的簽名引數是語言怎樣的,一般都是要原始的鍵值然后加密鑰md5,你獲取自己的引數是否進行urldecodeuj5u.com熱心網友回復:
語言=>組合



uj5u.com熱心網友回復:
那你就 encode一下。uj5u.com熱心網友回復:
但是我比較奇怪的是,你的方法里 result = result.Replace("&", "");
把&替換了。
那你提交前,也需要同樣的規則來設定sign。這樣應該也沒問題啊
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/80500.html
標籤:C#
上一篇:LIST 目錄樹 分層
