解決百度地圖{"status":211,"message":"APP SN校驗失敗"},如何計算SN值

狀態碼定義

狀態碼 定義 註釋
0 正常  
1 服務器內部錯誤 該服務響應超時或系統內部錯誤,請留下聯繫方式
10 上傳內容超過8M Post上傳數據不能超過8M
101 AK參數不存在 請求消息沒有攜帶AK參數
102 MCODE參數不存在,mobile類型mcode參數必需 對於Mobile類型的應用請求需要攜帶mcode參數,該錯誤碼代表服務器沒有解析到mcode
200 APP不存在,AK有誤請檢查再重試 根據請求的ak,找不到對應的APP
201 APP被用戶自己禁用,請在控制檯解禁  
202 APP被管理員刪除 惡意APP被管理員刪除
203 APP類型錯誤 當前API控制檯支持Server(類型1), Mobile(類型2, 新版控制檯區分爲Mobile_Android(類型21)及Mobile_IPhone(類型22))及Browser(類型3),除此之外其他類型認爲是APP類型錯誤
210 APP IP校驗失敗 在申請SERVER類型應用的時候選擇IP校驗,需要填寫IP白名單,如果當前請求的IP地址不在IP白名單或者不是0.0.0.0/0就認爲IP校驗失敗

211

APP SN校驗失敗

SERVER類型APP有兩種校驗方式IP校驗和SN校驗,當用戶請求的SN和服務端計算出來的SN不相等的時候提示SN校驗失敗

220 APP Referer校驗失敗 瀏覽器類型的APP會校驗referer字段是否存且切在referer白名單裏面,否則返回該錯誤碼
230 APP Mcode碼校驗失敗 服務器能解析到mcode,但和數據庫中不一致,請攜帶正確的mcode
240 APP 服務被禁用 用戶在API控制檯中創建或設置某APP的時候禁用了某項服務,若需開通權限,可進入API控制檯爲AK勾選對應服務
250 用戶不存在 根據請求的user_id, 數據庫中找不到該用戶的信息,請攜帶正確的user_id
251 用戶被自己刪除 該用戶處於未激活狀態
252 用戶被管理員刪除 惡意用戶被加入黑名單
260 服務不存在 服務器解析不到用戶請求的服務名稱
261 服務被禁用 該服務已下線
301 永久配額超限,限制訪問 配額超限,如果想增加配額請聯繫我們
302 天配額超限,限制訪問 配額超限,如果想增加配額請聯繫我們
401 當前併發量已經超過約定併發配額,限制訪問 併發控制超限,請控制併發量或聯繫我們
402 當前併發量已經超過約定併發配額,並且服務總併發量也已經超過設定的總併發配額,限制訪問 併發控制超限,請控制併發量或聯繫我們

網址:http://lbsyun.baidu.com/apiconsole/key,如下

點擊:設置,如下圖

sn計算算法,網址:http://lbsyun.baidu.com/index.php?title=webapi/appendix

javascript中一般採用encodeURIComponent函數對特殊字符進行編碼。

Java中可以使用函數URLEncoder.encode對特殊字符進行編碼。

C#中可以使用函數HttpUtility.UrlEncode對特殊字符進行編碼。

php中可以使用函數urlencode對特殊字符進行編碼。

 

Python計算SN算法如下,python 2.7參考代碼:

填入自己的AK和SK,計算出自己的SN

# -*- coding: utf-8 -*- 
# 第一行必須有,否則報中文字符非ascii碼錯誤
import urllib
import hashlib

# 以get請求爲例http://api.map.baidu.com/geocoder/v2/?address=百度大廈&output=json&ak=yourak
queryStr = '/geocoder/v2/?address=百度大廈&output=json&ak=yourak'

# 對queryStr進行轉碼,safe內的保留字符不轉換
encodedStr = urllib.quote(queryStr, safe="/:=&?#+!$,;'@()*[]")

# 在最後直接追加上yoursk
rawStr = encodedStr + 'yoursk'

# md5計算出的sn值7de5a22212ffaa9e326444c75a58f9a0
# 最終合法請求url是http://api.map.baidu.com/geocoder/v2/?address=百度大廈&output=json&ak=yourak&sn=7de5a22212ffaa9e326444c75a58f9a0
print hashlib.md5(urllib.quote_plus(rawStr)).hexdigest()
http://api.map.baidu.com/geocoder/v2/?address=%E7%99%BE%E5%BA%A6%E5%A4%A7%E5%8E%A6&output=json&ak=你的AK&sn=你的SN



得到結果:
{"status":0,"result":{"location":{"lng":116.30788068028267,"lat":40.05705856845244},"precise":1,"confidence":80,"comprehension":100,"level":"商務大廈"}}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章