首页后端开发ASP.NETc#之解决百度地图api APP SN校验失败问题(代码实例)

c#之解决百度地图api APP SN校验失败问题(代码实例)

时间2024-01-30 23:58:02发布访客分类ASP.NET浏览774
导读:收集整理的这篇文章主要介绍了c#之解决百度地图api APP SN校验失败问题(代码实例),觉得挺不错的,现在分享给大家,也给大家做个参考。本篇文章给大家介绍在使用c#调用百度地图api时遇到的SN校验失败问题的解决方法。有一定的参考价值,...
收集整理的这篇文章主要介绍了c#之解决百度地图api APP SN校验失败问题(代码实例),觉得挺不错的,现在分享给大家,也给大家做个参考。本篇文章给大家介绍在使用c#调用百度地图api时遇到的SN校验失败问题的解决方法。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所助。

在使用c#调用百度地图Web服务api遇到的签名(sn校验)问题,在此记录一下,(ip白名单校验的请忽略

1.首先获取ak与sk,这个两个东西可以从控制台中获取到

2.在这个地址:sn签名算法,里面提供了java,php,c#,python2.7的参考代码

在百度提供的参考代码中,其中c#的代码中MD5加密方法是有问题的,(在笔者写随笔时,代码还是有问题的,之后希望百度官方修复此问题)

把百度的MD5方法修改一下,签名就正确了,api正常调用了,开心!!

这里是完整的签名代码

using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Web;
namespace IpService.Code{
    public class BaiduAKSNCaculater    {
        PRivate static string MD5(string password)        {
            try            {
                    System.SecurITy.Cryptography.HashAlgorithm hash = System.Security.Cryptography.MD5.Create();
                    byte[] hash_out = hash.COMputeHash(System.Text.Encoding.UTF8.GetBytes(password));
                    VAR md5_str=BitConverter.ToString(hash_out).Replace("-", "");
                    return md5_str.ToLower();
            }
            catch            {
                                    throw;
            }
        }
        private static string UrlEncode(string str)        {
                str = System.Web.HttpUtility.UrlEncode(str);
                byte[] buf = Encoding.ASCII.GetBytes(str);
    //等同于Encoding.ASCII.GetBytes(str)            for (int i = 0;
     i  buf.Length;
 i++)                if (buf[i] == '%')                {
                        if (buf[i + 1] >
    = 'a') buf[i + 1] -= 32;
                        if (buf[i + 2] >
    = 'a') buf[i + 2] -= 32;
                        i += 2;
                }
                return Encoding.ASCII.GetString(buf);
//同上,等同于Encoding.ASCII.GetString(buf)        }
            private static string HttpBuildQuery(IDictionarystring, string>
 querystring_arrays)        {
                StringBuilder sb = new StringBuilder();
            foreach (var item in querystring_arrays)            {
                    sb.ApPEnd(UrlEncode(item.Key));
                    sb.Append("=");
                    sb.Append(UrlEncode(item.Value));
                    sb.Append("&
    ");
            }
                sb.Remove(sb.Length - 1, 1);
                return sb.ToString();
        }
            public static string CaculateAKSN(string ak, string sk, string url, IDictionarystring, string>
 querystring_arrays)        {
                var queryString = HttpBuildQuery(querystring_arrays);
                var str = UrlEncode(url + "?" + queryString + sk);
                           return MD5(str);
        }
    }
}
    

这里是调用代码

public static string GetIPAreas()        {
                var ip = "你要查询的ip地址";
                var ak = "从百度控制台获取到应用AK";
                var sk = "从百度控制台获取到签名SK";
                var uri = "http://api.map.baidu.com";
                var path = "/location/ip";
                var param = new Dictionarystring, string>
    ();
                param.Add("ip", ip);
                param.Add("ak", ak);
                //注意:签名的url参数,并非完整地址            var sn = BaiduAKSNCaculater.CaculateAKSN(ak, sk, path, param);
            var url = string.Format("{
0}
{
1}
?ip={
2}
    &
ak={
3}
    &
sn={
4}
    ",                uri,                path,                ip,                ak,                sn);
                var str = Code.HttpService.Get(url);
                return str;
        }
    

写在最后,希望百度官方尽快修改示例中的代码,这样也方便别人拿来用

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。更多相关教程请访问C#视频教程!

以上就是c#之解决百度地图api APP SN校验失败问题(代码实例)的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

上一篇: C#如何绘制PDF嵌套表格?绘制PDF...下一篇:C#如何使用Reflect获取dll文件中...猜你在找的ASP.NET相关文章 C# 一些面试试题的实例教程2022-05-16.NET 6开发TodoList应用之请求日志组件HttpLogging介绍2022-04-16.NET 6中间件Http Logging使用介绍2022-04-16gojs一些实用的高级用法2022-04-16.NET6开发TodoList应用之实现查询排序2022-04-16.NET6开发TodoList应用之实现数据塑形2022-04-16.NET微服务架构CI/CD自动打包镜像2022-04-16Asp.Net Core 使用Monaco Editor 实现代码编辑器功能2022-04-16.NET微服务架构CI/CD自动构建Jenkins+Gitee2022-04-16.Net Core微服务网关Ocelot集成Consul2022-04-16 其他相关热搜词更多phpjavapython程序员loadpost-format-gallery

若转载请注明出处: c#之解决百度地图api APP SN校验失败问题(代码实例)
本文地址: https://pptw.com/jishu/593210.html
利用Unity脚本自定义分辨率实现相机截一张高清截图 JavaScript怎样实现计算两数的乘积功能

游客 回复需填写必要信息