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();
- }