百度地图 sn校验失败

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

        }

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值