http://api.map.baidu.com/geoconv/v1/?coords=114.21892734521,29.575429778924&from=1&to=5&ak=你的密钥 //GET请求
总是返回sn校验失败,原因是 coords的参数有逗号,在按照官方实例时,不能处理一种参数形式,那就是参数中不只有中文,还有其他特殊字符,比如逗号;就会导致sn错误
// 对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()
}
解决方法 改下toQueryString
//针对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();
}