Обновление контента приложений Android через интернет? - PullRequest
2 голосов
/ 03 октября 2010

Я хочу разработать приложение для Android, которое будет извлекать контент из Интернета (с сервера) и представлять его в приложении.

(например, я беру прогноз погоды на сегодня, помещаю цифры в базу данных SQLite илифайл .txt, поместите файл database / txt на интернет-сервер, чтобы при открытии приложения приложение подключалось и загружало базу данных через сеть и представляло мне прогноз на сегодня)

Если вы можете сослаться на какой-то пример /видео-учебник / книга, которая занимается этой проблемой, я буду очень благодарен!

1 Ответ

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

То, что вы хотите сделать, это разработка 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...