2011-10-22 169 views
1

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

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

我知道如何使用json来使用webservices。

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

2.And我应该遵循什么样的方式来存储数据

我应该把它存储在设备高速缓存或 我应该把它存储在应用程序的SQLite数据库

编辑: GET来自webservice的数据

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(); 
     } 

我这样做得到d从服务器

但无法ATA把这个数据在sqlite的分贝请指导我

回答

3
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 

要存储的数据要装载许多具体和格式化和categoriesed信息然后sqlite的分贝会更多的帮助FUL来存储和检索数据。

+0

好吧我会用sqlite bt有没有什么办法从webservice获取数据并将其存储在sqlite数据库? – Shruti

+0

我不知道Android中的任何特殊功能,因为我通过解析响应并将其添加到数据库中来做到这一点。为了更好的练习,你可以让自己的自定义抽象类来做到这一点。 – MKJParekh

+0

好的,你能告诉我解析响应的代码段并将其添加到数据库? – Shruti

1
  1. 取决于您的应用程序的体系结构。如果这些数据没有改变,那么你可以在第一次启动时下载它,然后重新使用它。

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

+0

thanx回答彼得bt你可以请指导我如何存储从web服务在sqlite数据库得到的数据 – Shruti

1

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

哦@Frankenstein,比我快:D 编辑:如果您打算缓存类别和产品集合,我总是会使用SQLite数据库!

如果媒体文件是静态的,您甚至可以将它们与您的应用程序资源一起发货。如果他们从未改变。