通过百度开放平台申请api成功后,百度会提供一个application key简称ak和一个security key简称sk。

看一下某个服务url的格式

1. url前缀

2. 服务类型

3. 参数

4. md5算法

下面是sn签名的方法,得到sn的值。

有个地方要注意的是签名前,先对每个参数值进行一次urlencode转换,拼接后再一次都整个字符串进行了urlencode转换。

 Dictionary<string, string> parms = new Dictionary<string, string>();
parms.Add("location", "北京");
parms.Add("output", "json");
parms.Add("ak", "---ak---"); string queryStr = parms.ToQueryString();
string wholeStr = string.Format("{0}?{1}{2}", "/telematics/v3/weather", queryStr, "---sk---");
string templStr = Uri.EscapeDataString(wholeStr); string rst = templStr.CreateMD5();
 public static string ToQueryString(this Dictionary<string, string> parms)
{
string rst = string.Empty;
if (parms != null && parms.Count > )
{
StringBuilder sb = new StringBuilder();
foreach (var item in parms)
{
sb.Append(string.Format("{0}={1}&", item.Key, Uri.EscapeDataString(item.Value)));
}
sb.Remove(sb.Length - , );
rst = sb.ToString();
}
return rst;
}

md5算法,最后返回十六进制字符串。

 public static string CreateMD5(this string str)
{
string strAlgName = Windows.Security.Cryptography.Core.HashAlgorithmNames.Md5;
Windows.Security.Cryptography.Core.HashAlgorithmProvider objMacProv = Windows.Security.Cryptography.Core.HashAlgorithmProvider.OpenAlgorithm(strAlgName); Windows.Storage.Streams.IBuffer data = Windows.Security.Cryptography.CryptographicBuffer.ConvertStringToBinary(str, Windows.Security.Cryptography.BinaryStringEncoding.Utf8);
Windows.Storage.Streams.IBuffer hash = objMacProv.HashData(data); return Windows.Security.Cryptography.CryptographicBuffer.EncodeToHexString(hash);
}

最后可以通过浏览器验证一下结果。那么在wp可以通过System.Net.Http.HttpClient GetStringAsync得到返回的json数据。

最新文章

  1. bzoj3110
  2. schtasks确实可以绕过UAC,简直不可思议啊~~
  3. Jquery Highcharts 选项配置 说明文档
  4. Samza在YARN上的启动过程 =》 之一
  5. (转)HTTP协议(3)
  6. Agg学习笔记
  7. nmon安装(转)
  8. Android 瘦身之道 ---- so文件
  9. php 多条件查询
  10. 一支烟的时间导致他错失女神,Python查看撤回消息,力挽狂澜!
  11. Docker的使用初探(二):Docker与.NET Core的结合
  12. nodejs之使用express框架连接mysql数据库,返回jsonapi数据
  13. php获取 POST请求的数据
  14. Swift 函数调用到底写不写参数名
  15. 【20181031T2】几串字符【数位DP思想+组合数】
  16. uva 10537 Toll! Revisited(优先队列优化dijstra及变形)
  17. 将各种格式的数据转换成XML
  18. ORACLE数据库导出导入数据
  19. 在Quartus使用TCL脚本文件配制管脚 《本人亲测》
  20. MySQL存储过程使用实例详解

热门文章

  1. OpenVPN添加本地路由方法
  2. pycharm -- 小技巧1 (显示文件的代码结构以及错误提示)
  3. js 按字段分组
  4. 十、api自动化环境问题及解决方案汇总(持续更新)
  5. django2.0数据展示流程
  6. 关于memcache分布式一致性hash
  7. 决策树与树集成模型(bootstrap, 决策树(信息熵,信息增益, 信息增益率, 基尼系数),回归树, Bagging, 随机森林, Boosting, Adaboost, GBDT, XGboost)
  8. Spring Boot实践——事件监听
  9. Python pip配置国内源
  10. partial function