码迷,mamicode.com
首页 > 移动开发 > 详细

安卓调用百度地图api 错误 mcode参数不存在

时间:2015-09-13 00:50:50      阅读:1226      评论:0      收藏:0      [点我收藏+]

标签:

自己的手机app里用到了百度地图sdk,希望根据手机获得的坐标来逆向到百度地图的坐标。

根据api文档拼写了url,因为是移动端,说是要添加mcode参数,然后我的url看起来如下:

http://api.map.baidu.com/geocoder/v2/?ak=xxxxxxx&mcode=sh1code;packname&callback=renderReverse&location=36.652181,116.870643&output=json&pois=0

 

先在浏览器里检查了,可以正常返回结果,然后自己写了个简单的httpURLConnection测试了下,在电脑上也是可以的。

然后把同样的  数据请求代码HttpUtil.sendHttpRequest(使用httpURLConnection进行连接)  和  URL(上面的) 迁移到安卓工程里,到模拟器和真机上测试 都失败!!!

返回的响应消息: .....mcode参数不存在 ,网上搜了半天,最不解的就是同样的url,我也完全正确的添加了mcode,目前的问题就是 电脑上j2se代码发送请求以及浏览器里直接敲url都正常,就是手机上不对。

 

也是纠结了半天,网上没搜到有意义的回答。

然后自己就想到手机端android和j2se的区别就是jdk了,不知道之前在哪看过有点印象的一句话就是“谷歌推荐在android里使用HttpClient”访问,之前习惯使用HttpURLConnection的方式请求web数据,

一直以为HttpURLConnection和HttpClient仅仅是用法上的不同,今天遇到的问题真是尴尬,提醒了自己一下,j2se和android sdk还是有差别的,尽量使用谷歌推荐的技术吧。

 

问题解决了,代码很简单:

String address = ...  //上面文章提到的

//Android端使用HttpGet请求百度api数据,返回结果正常
public static String sendHttpGet(String address){
        try {
            HttpClient client = new DefaultHttpClient();
            HttpGet httpGet = new HttpGet(address);
            
            HttpResponse res = client.execute(httpGet);
            
            if(res.getStatusLine().getStatusCode() == 200){
                return EntityUtils.toString(res.getEntity(),"utf-8");
            }
            
            return res.getStatusLine().getReasonPhrase();
        } catch (Exception e) {
            e.printStackTrace();
            return e.toString();
        }
    }

 

安卓调用百度地图api 错误 mcode参数不存在

标签:

原文地址:http://www.cnblogs.com/everhad/p/4803888.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!