Android-приложение, использующее данные из веб-сервиса - PullRequest
2 голосов
/ 02 октября 2010

Я хочу написать приложение для Android, которое может отображать некоторые данные, полученные (опрошенные) с интернет-ресурса.

Полагаю, мне нужно написать некоторую логику, которая будет периодически вызывать и получать данные с какой-то конечной точки, анализировать ответ и отображать его. Есть хороший учебник для всех этих шагов?

Я очень мало знаю о программировании Android на данный момент, и, возможно, лучше начать с чего-то более простого. Я просто хочу знать, на что обращать внимание при изучении некоторых ресурсов по этому вопросу.

1 Ответ

3 голосов
/ 03 октября 2010

Что вы хотите сделать, это разработать rest api , который предоставляет данные для вашего приложения для Android.Например, на вашем веб-сайте есть контент, который вы хотите использовать в своем приложении, тогда вы можете написать php-скрипт, который просто возвращает эти данные в определенном формате.

Например, mysite.net/rest/fetchAllLocations.php?maybe_some_parameters

Это будет возвращать местоположения, например, в формате json, вот пример, как это выглядит:

[{"id": 1, "shop_lng": 8.5317153930664, "shop_lat": 52.024803161621, "shop_zipcode ": 33602," shop_city ":" Билефельд», "shop_street": "Arndtstra \ u00dfe", "shop_snumber": 3, "shop_name": "М \ u00fcller", "shop_desc": "Kaufhaus"}]

Вот пример запроса API отдыха:

http://shoqproject.supervisionbielefeld.de/public/gateway/gateway/get-shops-by-city/city/Bielefeld

Так что, настроив API отдыха, вы можете получать эти данные с помощью своего телефона Android.Я использую статический метод для получения этих данных:

public class JsonGrabber{

    public static JSONArray receiveData(){  
        String url = "your url";
        String result = "";

        DefaultHttpClient client = new DefaultHttpClient();
        HttpGet method = new HttpGet(url);
        HttpResponse res = null;

        try {
            res = client.execute(method);
        } catch (ClientProtocolException e1) {
            e1.printStackTrace();
        } catch (IOException e1) {
            e1.printStackTrace();
        }

        try{
            InputStream is = res.getEntity().getContent();
    BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"));
             StringBuilder sb = new StringBuilder();
             String line = null;
             while ((line = reader.readLine()) != null) {
                     sb.append(line + "\n");
             }
             is.close();
             result = sb.toString();
        }catch(Exception e){
             Log.e("log_tag", "Error converting result "+e.toString());
        }

        JSONArray jArray = null;

        try{
             jArray = new JSONArray(result);
        }catch(JSONException e){
                Log.e("log_tag", "Error parsing data "+e.toString());
        }

        return jArray;
    }
}

Ну вот и все, когда у вас есть данные в формате json, вам просто нужно их проанализировать:

JSONArray test = (JSONArray) JsonGrabber.receiveData() 

try { 
    for(int i=0;i<test.length();i++){
    JSONObject json_data = test.getJSONObject(i);
    int id = json_data.getInt("id");
    }
}

Веб-запросдолжен выполняться в другом потоке, потому что это может занять много времени.Так что вам нужно иметь дело с AsyncTask.Вот некоторые ресурсы:

Безболезненная многопоточность Многопоточность для производительности Hello Android Tutorial

...