Электронная коммерция в Android - PullRequest
1 голос
/ 22 октября 2011

Я новичок в разработке для Android, и сейчас я занимаюсь разработкой приложения для электронной коммерции в Android для покупок в Интернете. До сих пор в этом проекте я создал корзину для покупок, в которой будут храниться статьи, выбранные пользователем. Но все, что я делал, работает статично.

Теперь мне нужно общаться с сервером, чтобы получать обновления о продуктах и ​​скидках.

Я знаю, как использовать веб-сервисы, используя json.

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

2. И какой подход к хранению данных я должен использовать

Я должен сохранить его в кеше устройства или Я должен хранить его в приложениях sqlite db

Редактировать: получить данные из веб-сервиса

try {
            Log.v("inside webservice call ", "1");
            HttpPost request = new HttpPost(url);
            request.setHeader("Accept", "application/json");
            request.setHeader("Content-type", "application/json");
            // Build JSON string
            Log.v("inside webservice call ", "2");
            JSONStringer JsonString = new JSONStringer().object().key("prodid")
                    .value("4057339").endObject();

            StringEntity entity = new StringEntity(JsonString.toString());
            request.setEntity(entity);
            Log.v("data", JsonString.toString());
            Log.v("inside webservice call ", "2");
            DefaultHttpClient httpClient1 = new DefaultHttpClient();
            HttpResponse response = httpClient1.execute(request);
            Log.v("inside webservice call ", "3");
            Log.v("response code", response.getStatusLine().getStatusCode()
                    + "");
            HttpEntity responseEntity = response.getEntity();
            // Read response data into buffer
            char[] buffer = new char[(int) responseEntity.getContentLength()];
            InputStream stream = responseEntity.getContent();
            InputStreamReader reader = new InputStreamReader(stream);
            reader.read(buffer);
            stream.close();
            Log.v("inside webservice call ", "4");
            results = new JSONObject(new String(buffer));
            // Populate text fields
            String message = results.getString("message");
            String isvalid = results.getString("isvalid");
            Log.v("tag", message + isvalid);
            Log.v("inside webservice call ", "5");
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }

Я делаю это для получения данных с сервера

но не могу поместить эти данные в sqlite db

Ответы [ 3 ]

3 голосов
/ 22 октября 2011
1.I am confused about that everytime i start my application i should communicate with server using webservice ?? or should i store the data in application when application is executed for the first time on device.

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

Для изображений и других файлов мультимедиа вы можете сохранить их на SDCard один раз, а в следующий раз просто проверить, существуют ли они, а затем не загружаться, это может сэкономить ваше время.

2.And what approach to store data should i follow 

Для хранения данных, когда вы загружаете много специфической и отформатированной и категоризированной информации, тогда sqlite db будет более полезна для хранения и извлечения данных.

1 голос
/ 22 октября 2011

В зависимости от типа данных, которые вы храните, я бы использовал один или другой.Для кеширования двоичных данных я использую файловую систему (как вы говорите, «кеш устройства»), но для более сложных структур я предпочитаю использовать БД SQLite.Преимущество SQLite заключается в том, что вы можете легко изменять свою структуру с каждым обновлением, используя хорошо известные запросы SQL.

О @Frankenstein, был быстрее меня: D РЕДАКТИРОВАТЬ: Если вы планируете кэшировать категории и коллекции продуктоввсегда будет использовать БД SQLite!

Если медиа-файлы статичны, вы даже можете отправлять их с ресурсами своего приложения.В случае, если они никогда не меняются.

1 голос
/ 22 октября 2011
  1. Зависит от архитектуры вашего приложения.Если эти данные не меняются, вы можете загрузить их при первом запуске, а затем использовать повторно.

  2. Кэш устройства?Я не знаю ничего подобного.Обычно сложные данные хранятся в базе данных.Но это действительно зависит от типа данных и требований к доступу (поиск и т. Д.).Посмотреть все опции хранения данных на Android .

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