2016-11-18 3 views
0

My AsyncTask Code ..AsyncTask Post Json Array Android

private class TestAsync extends AsyncTask<Object, Object, JSONArray> { 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 


    } 

    @Override 
    protected JSONArray doInBackground(Object... arg0) { 

     Cursor cursor = mydb.getDat(); 

     JSONArray resultSet  = new JSONArray(); 

     cursor.moveToFirst(); 
     while (!cursor.isAfterLast()) { 

      int totalColumn = cursor.getColumnCount(); 
      JSONObject rowObject = new JSONObject(); 

      for(int i=0 ; i< totalColumn ; i++) 
      { 
       if(cursor.getColumnName(i) != null) 
       { 
        try 
        { 

         if(cursor.getString(i) != null) 
         { 

          // Log.d("Data", cursor.getString(i)); 
          rowObject.put(cursor.getColumnName(i) , cursor.getString(i)); 

          Bitmap bitmap = BitmapFactory.decodeFile(cursor.getString(cursor.getColumnIndex(DBHelper.PHOTO))); 
          // Log.d("pic",bitmap.toString()); 
          String en= encodeToBase64(bitmap, Bitmap.CompressFormat.JPEG,10); 

          // Log.d("dn",en); 

          rowObject.put("pic",en); 





         } 
         else 
         { 



          rowObject.put(cursor.getColumnName(i) , ""); 
         } 
        } 
        catch(Exception e) 
        { 
         // Log.d("Data", e.getMessage() ); 
        } 
       } 
      } 
      resultSet.put(rowObject); 
      cursor.moveToNext(); 
     } 
     cursor.close(); 
     Log.d("Final Json", resultSet.toString()); 

     return resultSet; 


    } 

    @Override 
    protected void onPostExecute(JSONArray result) { 
     super.onPostExecute(result); 

    } 

} 

Mein Code json zum Server ..

JsonArrayRequest request = new JsonArrayRequest(Request.Method.POST, 
        server_url, new TestAsync.execute(), 
        new Response.Listener<JSONArray>() { 

Wie kann ich Async Aufgabe senden json zurückzuversetzen, um es zu der Server.Wie kann ich dieses Problem beheben.Der obige Code zeigt Fehler in der Postleitzahl unter execte(). Wie kann ich dieses Problem beheben?

Antwort

0

Anstelle von TestAsync.execute(), die AsyncTask zu JsonArrayRequest zurückgeben. verwenden onPostExecute für die Datenweitergabe von doInBackground zurück Sever: zum Senden von Daten von onPostExecute in Aktivität

@Override 
protected void onPostExecute(JSONArray result) { 
    super.onPostExecute(result); 
    JsonArrayRequest request = new JsonArrayRequest(Request.Method.POST, 
       server_url,result, 
       new Response.Listener<JSONArray>() { 
} 

Wenn TestAsync separate Klasse ist dann custom listenerinterface mit erstellen.

+0

können Sie es in meinem Code tun.? –

+2

@Tom: Nein, tun Sie sich selbst und wenn Sie irgendein Problem dann sagen, wir werden versuchen, Ihnen zu helfen –

+0

@ cricket_007: Ja, richtig repariert es –