http://api.map.baidu.com/geocoder/v2/?location=22.528212,113.934891&output=json&ak=9pZtx5lBSgHltLoktHVSSvH0yYiBs06S&sn=8b6d4bda16818c4a1e358b94e2cdce5ejson
老是返回sn校驗失敗,緣由是 location的參數有逗號,在按照官方實例時,不能處理一種參數形式,那就是參數中不僅有中文,還有其餘特殊字符,好比逗號;就會致使sn錯誤api
- / 對url內參數的全部value做utf8編碼,拼接返回結果
- public String toQueryString(Map<?, ?> data)
- throws UnsupportedEncodingException {
- StringBuffer queryString = new StringBuffer();
- for (Entry<?, ?> pair : data.entrySet()) {
- queryString.append(pair.getKey() + "=");
- queryString.append(URLEncoder.encode((String) pair.getValue(),
- "UTF-8") + "&");
- }
- if (queryString.length() > 0) {
- queryString.deleteCharAt(queryString.length() - 1);
- }
- return queryString.toString();
- }
解決方法 改下toQueryStringapp
- //針對location參數的改進
- public String toQueryString(Map<?, ?> data)
- throws UnsupportedEncodingException {
- StringBuffer queryString = new StringBuffer();
- for (Entry<?, ?> pair : data.entrySet()) {
- queryString.append(pair.getKey() + "=");
- String ss[] = pair.getValue().toString().split(",");
- if(ss.length>1){
- for(String s:ss){
- queryString.append(URLEncoder.encode(s,"UTF-8") + ",");
- }
- queryString.deleteCharAt(queryString.length()-1);
- queryString.append("&");
- }
- else{
- queryString.append(URLEncoder.encode((String) pair.getValue(),
- "UTF-8") + "&");
- }
- }
- if (queryString.length() > 0) {
- queryString.deleteCharAt(queryString.length() - 1);
- }
- return queryString.toString();
- }