繁体   English   中英

如何获取Foursquare场地列表-Android

[英]How to get foursquare venues list - Android

解决方案:嗯,在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

有什么问题吗?

谢谢。

尝试这个

private class GetChildList extends AsyncTask<String, Void, String>{

        private String strm = "22.81,89.55";
        private String client_id = "xxx";
        private String client_secret = "xxx";
        private String currentDateandTime = "20130715";  //yyyymmdd

        @Override
        protected String doInBackground(String... params) {
            // TODO Auto-generated method stub
            DefaultHttpClient httpclient = new DefaultHttpClient();
            final HttpParams httpParams = httpclient.getParams();
            HttpConnectionParams.setConnectionTimeout(httpParams, 30000);
            HttpConnectionParams.setSoTimeout(httpParams, 30000);
            HttpGet httppost = new HttpGet("https://api.foursquare.com/v2/venues/search?intent=checkin&ll="+strm+"&client_id="+client_id+"&client_secret="+client_secret+"&v="+currentDateandTime); //

            try{

                HttpResponse response = httpclient.execute(httppost);  //response class to handle responses
                jsonResult = inputStreamToString(response.getEntity().getContent()).toString();

                JSONObject object = new JSONObject(jsonResult);   
             }
            catch(ConnectTimeoutException e){
                Toast.makeText(getApplicationContext(), "No Internet", Toast.LENGTH_LONG).show();
            }
            catch (ClientProtocolException e) {
            e.printStackTrace();
            } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            }
            return jsonResult;
        }

        protected void onPostExecute(String Result){
            try{

                Toast.makeText(getApplicationContext(), "R E S U L T :"+jsonResult, Toast.LENGTH_LONG).show();
                System.out.println(jsonResult);
                //showing result

            }catch(Exception E){
                Toast.makeText(getApplicationContext(), "Error:"+E.getMessage(), Toast.LENGTH_LONG).show();
            }

        }

        private StringBuilder inputStreamToString(InputStream is) {
            String rLine = "";
            StringBuilder answer = new StringBuilder();
            BufferedReader rd = new BufferedReader(new InputStreamReader(is));

            try {
             while ((rLine = rd.readLine()) != null) {
              answer.append(rLine);
               }
            }

            catch (IOException e) {
                e.printStackTrace();
             }
            return answer;
           }



    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM