百度地圖api location 211 sn校驗失敗

http://api.map.baidu.com/geocoder/v2/?location=22.528212,113.934891&output=json&ak=9pZtx5lBSgHltLoktHVSSvH0yYiBs06S&sn=8b6d4bda16818c4a1e358b94e2cdce5ejson

老是返回sn校驗失敗,緣由是 location的參數有逗號,在按照官方實例時,不能處理一種參數形式,那就是參數中不僅有中文,還有其餘特殊字符,好比逗號;就會致使sn錯誤api

  1. / 對url內參數的全部value做utf8編碼,拼接返回結果
  2.         public String toQueryString(Map<?, ?> data)
  3.                         throws UnsupportedEncodingException {
  4.                 StringBuffer queryString = new StringBuffer();
  5.                 for (Entry<?, ?> pair : data.entrySet()) {
  6.                         queryString.append(pair.getKey() + "=");
  7.                         queryString.append(URLEncoder.encode((String) pair.getValue(),
  8.                                         "UTF-8") + "&");
  9.                 }
  10.                 if (queryString.length() > 0) {
  11.                         queryString.deleteCharAt(queryString.length() - 1);
  12.                 }
  13.                 return queryString.toString();
  14.         }

解決方法 改下toQueryStringapp

  1. //針對location參數的改進
  2. public String toQueryString(Map<?, ?> data)
  3.                         throws UnsupportedEncodingException {
  4.                 StringBuffer queryString = new StringBuffer();
  5.                 for (Entry<?, ?> pair : data.entrySet()) {
  6.                         queryString.append(pair.getKey() + "=");
  7.                         String ss[] = pair.getValue().toString().split(",");
  8.                         if(ss.length>1){
  9.                                 for(String s:ss){
  10.                                         queryString.append(URLEncoder.encode(s,"UTF-8") + ",");
  11.                                 }
  12.                                 queryString.deleteCharAt(queryString.length()-1);                        
  13.                                 queryString.append("&");
  14.                         }
  15.                         else{
  16.                             queryString.append(URLEncoder.encode((String) pair.getValue(),
  17.                                         "UTF-8") + "&");
  18.                         }
  19.                 }
  20.                 if (queryString.length() > 0) {
  21.                         queryString.deleteCharAt(queryString.length() - 1);
  22.                 }
  23.                 return queryString.toString();
  24.         }
相關文章
相關標籤/搜索