【问题标题】:Ecommerce in androidAndroid中的电子商务
【发布时间】:2011-12-13 03:35:33
【问题描述】:

我是 android 开发的新手,现在我正在开发一个用于在线购物的 android 电子商务应用程序。到目前为止,在这个项目中,我已经创建了一个购物车来保存用户选择的文章。但我所做的每一件事都是静态的。

现在我必须与服务器通信以获取有关产品和折扣的更新。

我知道如何使用 json 来使用 web 服务。

1.我很困惑,每次我启动我的应用程序时,我都应该使用 webservice 与服务器通信??或者我应该在应用程序第一次在设备上执行时将数据存储在应用程序中。

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 请指导我

【问题讨论】:

    标签: android web-services sqlite caching e-commerce


    【解决方案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 将更有助于存储和检索数据。

    【讨论】:

    • 好的,我将使用 sqlite bt 有没有办法从 web 服务获取数据并将其存储在 sqlite db 中??
    • 我不知道 Android 中的任何特殊功能。我通过解析响应并将其添加到数据库中手动执行此操作。是的,为了更好地练习,您可以制作自己的自定义抽象类来做到这一点。
    • 好的,你能告诉我解析响应并将其添加到数据库中的代码段吗??
    • 我和许多其他开发人员会很乐意帮助你..但我建议你应该开始一个新问题,以便其他人有更多的知识和经验。那我可以教你。我还建议尝试一些东西,然后发布您的问题,因为 SO 是 Q/A 网站而不是 SPoon Feeding 网站。如果您只是用谷歌搜索您的问题,您的许多疑问都会被清除。
    • 作为 android 问题的第一个起点,我总是会查看官方开发者页面,其中有很多有用的信息和教程:developer.android.com/guide/topics/data/data-storage.html#db
    【解决方案2】:
    1. 取决于您的应用程序的架构。如果这些数据没有改变,那么您可以在第一次启动时下载它然后重复使用它。

    2. 设备缓存?我不知道这样的事情。通常复杂的数据存储在数据库中。但这实际上取决于您的数据类型和访问要求(搜索等)。查看全部data storage options on Android

    【讨论】:

    • thanx 回复 peter bt 你能指导我如何将我从 web 服务获得的数据存储在 sqlite db 中
    【解决方案3】:

    根据您存储的数据类型,我会使用其中一种。对于缓存二进制数据,我使用文件系统(如您所说的“设备缓存”),但对于更复杂的结构,我更喜欢使用 SQLite DB。 SQLite 的一个优点是,您可以使用众所周知的 SQL 查询轻松地在每次更新时更改您的结构。

    哦@Frankenstein,比我快 :D 编辑:如果您打算缓存类别和产品集合,我将始终使用 SQLite DB!

    如果媒体文件是静态的,您甚至可以将它们与您的应用程序资源一起发布。以防它们永远不会改变。

    【讨论】:

      猜你喜欢
      • 2021-06-11
      • 1970-01-01
      • 2010-12-13
      • 2012-08-29
      • 2021-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多