解决方案:嗯,在 android 4.0 上不允许 http 请求,因为它会很长时间并且 ui 会冻结。有必要开始一个新线程。
首先,这是我的第一篇文章,如果我做错了,请见谅。
好吧,我正在尝试为我的应用程序从foursquare 获取场地列表。我已经搜索了很多,但我仍然没有找到答案。这是我第一次使用foursquare api和json,但我不知道问题出在哪里,或者我做错了什么。当我尝试从 url (.openStream()) 获取流时,代码失败。我正在尝试使用无用户请求获取场地列表。
所以这是我的代码,如果有人可以帮助我,我会非常感激!谢谢你。
String url = "https://api.foursquare.com/v2/venues/search?intent=checkin&ll="+str+"&client_id="+client_id+"&client_secret="+client_secret+"&v="+currentDateandTime+"&limit=15";
try{
URL urlend = new URL(url);
URLConnection urlConnection = urlend.openConnection();
InputStream in = (InputStream)urlend.openStream();
String JSONReponse = CharStreams.toString(new InputStreamReader(in, "UTF-8"));
JSONObject jsonObject = new JSONObject(JSONReponse);
JSONObject reponseJson= jsonObject.getJSONObject("reponse");
JSONArray arrayVenues= reponseJson.getJSONArray("venues");
final String[] names= new String[15];
final String[] venuesId= new String[15];
for (int i=0;i< arrayVenues.length(); i++)
{
JSONObject jObj= arrayVenues.getJSONObject(i);
names[i]= jObj.getString("name");
venuesId[i]= jObj.getString("id");
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, names);
listView.setAdapter(adapter);
}
} catch(Exception e){
// In your production code handle any errors and catch the individual exceptions
e.printStackTrace();
}
编辑:我从这里尝试了其他解决方案:
http://stackoverflow.com/questions/7281283/android-webrequest-simple-solution
当它执行该指令“response = httpclient.execute(httpget);” 再次跳起来接住。而在这个
HttpClient httpclient = new DefaultHttpClient();
当我调试并专注于它时,它会出现这个 http://i44.tinypic.com/33nyscg.png
有什么不对吗?
谢谢你。