jeudi 28 janvier 2016

How to send SQLite data from android to MySQL server

So i am trying to send my SQLIte data with online MYSQL server but to no avail.Naturally,i ran to google and was lucky enough to find this. Apparently it's supposed to work and it does but i am not receiving the data on my server.

And yes, i know this question has been asked here and here, but i havent been able to patch it up using the suggestions given.

So here is what i have tried.This is how i convert my SQLite data into JSON using GSON:

 public String composeJSONfromSQLite() {
 ArrayList<HashMap<String, String>> offlineList;
 offlineList = new ArrayList<HashMap<String, String>>();
 String selectQuery = "SELECT  * FROM offlineTable ";
 SQLiteDatabase database = this.getWritableDatabase();
 Cursor cursor = database.rawQuery(selectQuery, null);
 if (cursor.moveToFirst()) {
 do {
 HashMap<String, String> map = new HashMap<String, String>();
 map.put("zip", cursor.getString(1));
 map.put("phone", cursor.getString(2));
 map.put("uid", cursor.getString(3));
 offlineList.add(map);

  } while (cursor.moveToNext());
  }
 database.close();
 Gson gson = new GsonBuilder().create();
 //Use GSON to serialize Array List to JSON
 return gson.toJson(offlineList);
 }

And this is how i send it to my server:

 public void syncSQLiteMySQLDB() {
   
 AsyncHttpClient client = new AsyncHttpClient();
   
 RequestParams params = new RequestParams();  
 params.put("offline",);
            
 Log.d("offline data log", loadCheckoutDB.composeJSONfromSQLite());
 client.addHeader("session_id", getapikey());
 client.addHeader("Content-Type", "application/json");

 client.post("http://ift.tt/1lXk4ln", params, new AsyncHttpResponseHandler() {
             
 @Override
  public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
  String s = new String(responseBody);
   
 Log.d("response to sync", s);
   
 try {
   
JSONObject obj = new JSONObject(s);
   
 if (obj.getBoolean("success")) {
   
 String success = obj.getString("message");
  //Toast.makeText(getApplicationContext(), success, Toast.LENGTH_LONG).show();
   
} else {
  
  String failure = obj.getString("message");
  //Toast.makeText(getApplicationContext(), failure, Toast.LENGTH_LONG).show();

  }
  } catch (JSONException e) {

  }

  }

  @Override
  
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
  
 // Toast.makeText(getApplicationContext(), "Failed to sync with server", Toast.LENGTH_LONG).show();
Log.d("sqlite sync error", String.valueOf(error));
  
 progbar.setVisibility(View.INVISIBLE);
 }

});
}

And when i log what the json looks like from android i get this format:

[{
 "zip": "325,
  "phone": "78291849",
  "uid": "14538177211"
 }]

But on my server i still get an empty array. What am i doing wrong?

This is how my request format should look like:

{
  "offline":[
  {
 "zip": "325,
  "phone": "78291849",
  "uid": "14538177211"
 }
]
}

Aucun commentaire:

Enregistrer un commentaire