標籤:
自己的手機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參數不存在