安卓調用百度地圖api 錯誤 mcode參數不存在

來源:互聯網
上載者:User

標籤:

自己的手機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了,不知道之前在哪看過有點印象的一句話就是“Google推薦在android裡使用HttpClient”訪問,之前習慣使用HttpURLConnection的方式請求web資料,

一直以為HttpURLConnection和HttpClient僅僅是用法上的不同,今天遇到的問題真是尷尬,提醒了自己一下,j2se和android sdk還是有差別的,盡量使用Google推薦的技術吧。

 

問題解決了,代碼很簡單:

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參數不存在

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.