Электронная коммерция в Android

#android #web-services #sqlite #caching #e-commerce

#Android #веб-сервисы #sqlite #кэширование #электронная коммерция

Вопрос:

Я новичок в разработке 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, пожалуйста, направьте меня

Ответ №1:

 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. хорошо, я буду использовать sqlite bt есть ли какой-нибудь способ получить данные из веб-сервиса и сохранить их в базе данных sqlite??

2. я не знаю какой-либо СПЕЦИАЛИЗИРОВАННОЙ ФУНКЦИИ в Android для этого .. я делаю это вручную, анализируя ответ и добавляя его в БД. да, для лучшей практики вы можете создавать свои собственные абстрактные классы для этого.

3. хорошо, не могли бы вы показать мне фрагмент кода для анализа ответа и добавления его в БД??

4. Я и многие другие разработчики с удовольствием поможем вам .. но я предлагаю для этого вам задать новый вопрос, чтобы другие люди, обладающие большими знаниями и опытом. тогда я смогу научить вас. и я также предлагаю ПОПРОБОВАТЬ ЧТО-нибудь, а затем опубликовать вашу проблему, потому что SO — это сайт вопросов и ответов, а не сайт для кормления ложкой. Если вы просто решите свои проблемы в Google, многие ваши сомнения будут устранены.

5. В качестве первой отправной точки для вопросов Android я бы всегда заглядывал на официальную страницу разработчика с большим количеством полезной информации и руководств: developer.android.com/guide/topics/data/data-storage.html#db

Ответ №2:

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

Комментарии:

1. спасибо за ответ Питеру Б.Т. Не могли бы вы рассказать мне, как хранить данные, которые я получил от webservice, в базе данных sqlite

Ответ №3:

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

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

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