需要:不通过地图定位,获取用户的城市地址。
方案:网上有免费开放资源,直接发送简单的get请求获取文本便可。其中比较稳定的有新浪和搜狐,主要是返回数据格式的区别。
代码如下:
用的是Vollye的String get请求。
RequestQueue mRequestQueue = Volley.newRequestQueue(mContext);
新浪API:
StringRequest stringRequest = new StringRequest("http://int.dpool.sina.com.cn/iplookup", new Response.Listener<String>() { @Override public void onResponse(String s) { t2.setText("StringRequet:" + s); //返回的数据是:1 -1 -1 中国 广东 佛山 String[] strings = s.split("\\s+"); city = strings[5]; //city=佛山 t3.setText(city); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { t2.setText("StringRequest:" + volleyError.toString()); } }); mRequestQueue.add(stringRequest);
搜狐api:
StringRequest stringRequest = new StringRequest("http://pv.sohu.com/cityjson?ie=utf-8", new Response.Listener<String>() { @Override public void onResponse(String s) { //返回的数据是:var returnCitySN = {"cip": "14.18.163.130", "cid": "440000", "cname": "广东省"}; t1.setText("StringRequet:" + s); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { t1.setText("StringRequest:" + volleyError.toString()); } }); mRequestQueue.add(stringRequest);