国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C#百度地圖開放平臺211sn校驗失敗解決方法

這篇具有很好參考價值的文章主要介紹了C#百度地圖開放平臺211sn校驗失敗解決方法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

個人認為百度地圖開放平臺確實很好用但就是C#的SN校驗會出現以下幾個問題

一、官方的示例代碼說的不清不楚

獲取SN函數的Uri應該使用不帶域名的Uri

比如:最終請求地址為https://api.map.baidu.com/location/ip?ip=119.126.10.15&coor=gcj02&ak=123456&sn=654321
AKSNCaculater.CaculateAKSN中的uri參數應該使用https://api.map.baidu.com/location/ip?ip=119.126.10.15&coor=gcj02&ak=123456&sn=654321,而不可以是https://aspi.map.baidu.com/location/ip?coor=gcj02&ip=119.126.10.15&ak=123456&sn=654321

獲取SN的時候參數的順序是怎么樣的,發(fā)送請求的時候參數的順序就必須是怎么樣

比如:獲取SN的時候參數順序是ip=119.126.10.15&coor=gcj02&ak=123456,那么最終請求地址就應該是https://api.map.baidu.com/location/ip?ip=119.126.10.15&coor=gcj02&ak=123456&sn=654321,而不可以是https://aspi.map.baidu.com/location/ip?coor=gcj02&ip=119.126.10.15&ak=123456&sn=654321

無論如何SN必須在最終請求地址的最后!

比如以上情況下:https://api.map.baidu.com/location/ip?ip=119.126.10.15&coor=gcj02&sn=654321&ak=123456就是一個錯誤的地址

二、官方MD5加密是錯的!

這一個真是把我害慘了,折騰了半天終于發(fā)現正確代碼(我也是copy別人的,但不管怎么說,官方的MD5加密代碼確實是錯的)

正確的加密過程如下

public static string MD52(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;
            }
        }

  完整類如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace SATPlatform
{
 
    public class AKSNCaculater
    {
        public static string MD52(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;
            }
        }
 
        public static string MD5(string password)
        {
            byte[] textBytes = System.Text.Encoding.UTF8.GetBytes(password);
            try
            {
                System.Security.Cryptography.MD5CryptoServiceProvider cryptHandler;
                cryptHandler = new System.Security.Cryptography.MD5CryptoServiceProvider();
                byte[] hash = cryptHandler.ComputeHash(textBytes);
                string ret = "";
                foreach (byte a in hash)
                {
                    ret += a.ToString("x");
                }
                return ret;
            }
            catch
            {
                throw;
            }
        }
 
        public 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)
        }
 
        public static string HttpBuildQuery(IDictionary<string, 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, IDictionary<string, string> querystring_arrays)
        {
            var queryString = HttpBuildQuery(querystring_arrays);
 
            var str = UrlEncode(url + "?" + queryString + sk);
 
            return MD52(str);
        }
    }
}

  



以上就是我被坑的經歷,希望對其他人有用~~~

最后再附帶上我的請求代碼

        /// <summary>
        /// 返回指定IP的位置對應的百度城市代碼(利用百度地圖API
        /// </summary>
        /// <param name="IP">需要查詢的IP地址</param>
        /// <returns></returns>
        public string GetPlace(string IP)
        {
            DataTable BasicIn = Reader("SELECT Th_MapAK , Th_MapSK FROM S_Inf");
            Dictionary<string, string> P = new Dictionary<string, string>()
            {
                {"ip",IP },
                {"coor","gcj02" },
                {"ak",BasicIn.Rows[0]["Th_MapAK"].ToString() }
                //{"address","百度大廈" },
                //{"output","json" },
                //{"ak","yourak" }
            };
            string GetSN = AKSNCaculater.CaculateAKSN(BasicIn.Rows[0]["Th_MapAK"].ToString(), BasicIn.Rows[0]["Th_MapSK"].ToString(), "/location/ip", P);
            //string GetSN = AKSNCaculater.CaculateAKSN("yourak", "yoursk", "/geocoder/v2/", P);
            HttpWebRequest NewRequest = (HttpWebRequest)WebRequest.Create("https://api.map.baidu.com/location/ip?" + AKSNCaculater.HttpBuildQuery(P) + "&sn=" + GetSN);
            NewRequest.Headers.Add("charset", "utf-8");
            NewRequest.Method = "GET";
            NewRequest.ContentType = "application/json";
            NewRequest.UserAgent = "Windows KeHuDuan";
            NewRequest.Timeout = 5000;//設置超時時間
            HttpWebResponse Response = (HttpWebResponse)NewRequest.GetResponse();
            Stream ResponseStream = Response.GetResponseStream();
            StreamReader ResponseStreamReader = new StreamReader(ResponseStream);
            string Res = ResponseStreamReader.ReadToEnd();
            ResponseStreamReader.Close();
            ResponseStream.Close();
            JObject ResJ = new JObject();
            try
            { ResJ = JObject.Parse(Res); }
            catch (Exception)
            { GiveErr(ErrCode.ThirdPartyError); }
            if (ResJ["status"].ToString() != "0")
                GiveErr(ErrCode.ThirdPartyError);
            return ResJ["content"]["address_detail"]["city_code"].ToString();
        }

  文章來源地址http://www.zghlxwxcb.cn/news/detail-519251.html

到了這里,關于C#百度地圖開放平臺211sn校驗失敗解決方法的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【NLP教程】用python調用百度AI開放平臺進行情感傾向分析

    【NLP教程】用python調用百度AI開放平臺進行情感傾向分析

    目錄 一、背景 二、操作步驟 2.1 創(chuàng)建應用 2.2 獲取token 2.3 情感傾向分析 三、其他情感分析 四、講解視頻 Hi,大家!我是 @馬哥python說 ,一名10年程序猿。 今天我來演示一下:通過百度AI開放平臺,利用python調用百度接口進行中文情感傾向分析,并得出情感極性分為積極、消

    2023年04月25日
    瀏覽(28)
  • Python編程實現百度AI開放平臺的接口對接方法,詳解和實踐指南

    Python編程實現百度AI開放平臺的接口對接方法,詳解和實踐指南 引言 百度AI開放平臺提供了豐富的人工智能接口,包括語音識別、圖像識別、自然語言處理等功能。本文將通過Python編程,詳解如何對接百度AI開放平臺的接口,并提供實際代碼示例。 準備工作 在開始之前,我們

    2024年02月13日
    瀏覽(31)
  • 快速調用百度AI開放平臺的API,以OCR通用文字識別為例(封裝函數進行連續(xù)調用)

    快速調用百度AI開放平臺的API,以OCR通用文字識別為例(封裝函數進行連續(xù)調用)

    ??博客主頁:是dream ??系列專欄: 深度學習環(huán)境搭建、環(huán)境配置問題解決、自然語言處理、語音信號處理、項目開發(fā) ??每日語錄:眼里有不朽的光芒 心里有永恒的希望 。 ??感謝大家點贊??收藏?指正?? ????????百度開放平臺允許開發(fā)者訪問和利用百度的各種服務

    2024年02月06日
    瀏覽(97)
  • 0基礎學習VR全景平臺篇 第99篇:百度地圖如何上傳全景圖

    0基礎學習VR全景平臺篇 第99篇:百度地圖如何上傳全景圖

    蛙色平臺現已打通VR全景入駐百度地圖全流程,百度全景分為免費版和付費版兩種,其中付費支持配置作品音樂、場景漫游熱點、聯(lián)系電話、描述信息。 百度地圖上傳案例 免費版? 付費版 一、百度地圖上傳流程 1、進入蛙色VR賬號后臺 (1)選擇-第三方平臺; (2)點擊-百度

    2024年02月07日
    瀏覽(30)
  • 使用百度地圖官方WEB API,提示 “ APP 服務被禁用“ 問題的解決方法

    使用百度地圖官方WEB API,提示 “ APP 服務被禁用“ 問題的解決方法

    項目上用了百度地圖官方WEB API,打開界面時百度地圖無法打開,出現彈窗: APP被您禁用啦。詳情查看:http://lbsyun.baidu.com/apiconsole/key# 。 查看錯誤信息: \\\"status\\\":240,\\\"message\\\":\\\"APP 服務被禁用\\\" 在https://lbsyun.baidu.com/index.php?title=webapi/appendix中找到百度地圖官方WEB API服務文檔—附錄

    2023年04月09日
    瀏覽(190)
  • 解決百度地圖的父元素出現滾輪之后啟用鼠標縮放模式之后出現偏移的現象

    解決百度地圖的父元素出現滾輪之后啟用鼠標縮放模式之后出現偏移的現象

    最近在做項目的時候,有個功能是點擊詳情按鈕的時候在一個彈框里展現出來列表的詳情 因為詳情彈框里面的數據有其他的表格數據,然后在彈框的下邊使用百度地圖展示后端發(fā)送過來的坐標點,然后把坐標點轉換之后使用百度地圖的方法制作覆蓋物上去。這里邊就出現了一

    2024年03月18日
    瀏覽(30)
  • 關于騰訊地圖geolocation.getLocation 經常定位失敗,定位時間過長的解決方法

    關于騰訊地圖geolocation.getLocation 經常定位失敗,定位時間過長的解決方法

    今天遇到個項目,騰訊地圖定位出現問題,導致地圖無法呈現出最近的目標 ?這是正常的效果,之前一直出現貴州等地點的信息,查看控制臺的網絡后,發(fā)現騰訊的定位失敗,要么就是定位時間過長,要20S左右,但是換EDGE瀏覽器卻能正常加載, 除了EDGE瀏覽器都會出現這個問

    2024年02月03日
    瀏覽(48)
  • 漏刻有時百度地圖API實戰(zhàn)開發(fā)(1)華為手機無法使用addEventListener click 的兼容解決方案

    漏刻有時百度地圖API實戰(zhàn)開發(fā)(1)華為手機無法使用addEventListener click 的兼容解決方案

    漏刻有時百度地圖API實戰(zhàn)開發(fā)(1)華為手機無法使用addEventListener click 的兼容解決方案 漏刻有時百度地圖API實戰(zhàn)開發(fā)(2)文本標簽顯示和隱藏的切換開關 漏刻有時百度地圖API實戰(zhàn)開發(fā)(3)自動獲取地圖多邊形中心點坐標 漏刻有時百度地圖API實戰(zhàn)開發(fā)(4)顯示指定區(qū)域在移動端異常的

    2024年01月19日
    瀏覽(92)
  • 關于微信小程序調用H5騰訊地圖API獲取定位信息提示失敗問題--解決辦法之一

    關于微信小程序調用H5騰訊地圖API獲取定位信息提示失敗問題--解決辦法之一

    在跳轉到H5頁面加載騰訊地圖API獲取定位信息時,“真機調試”、“開發(fā)模式”都可以使用 web-view 組件訪問我需要的路徑。只有“體驗版”、“線上版本”會出現這個錯誤提示。正常加載都是正常的,但是因為騰訊地圖API在獲取定位信息的同時,會在頁面上內嵌一個隱藏的

    2024年04月26日
    瀏覽(31)
  • 如何申請百度地圖開發(fā)者AK和基本使用,并解決Uncaught ReferenceError: BMapGL is not defined的錯誤

    如何申請百度地圖開發(fā)者AK和基本使用,并解決Uncaught ReferenceError: BMapGL is not defined的錯誤

    今天在學習 amis 框架中的地理位置( LocationPicker )的組件,如下圖所示: 關于 amis 的更多了解,可以參考博文:百度低代碼amis框架的講解 截圖中注意的是, ak 參數只能在 amis 官網示例中使用,讓我們前往百度地圖開放平臺申請自己的 ak 。 百度地圖開放平臺官網地址:https:

    2024年02月01日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包