0

I want to pass last id on php server.I got last inserted id but while sending it to server there is problem of "network on main thread exception".

public void get_data(String data) {
            try {
                JSONArray data_array = new JSONArray(data);
                for (int i = 0; i < data_array.length(); i++) {
                JSONObject obj = new JSONObject(data_array.get(i).toString());
                Message add = new Message();
                Log.d("JSONVALUE :", obj.toString());
                String category = obj.optString("category");
                String status = obj.optString("status");
                String imgLink = obj.optString("imagelink");
                String id = obj.optString("id");
                add.setCategory(category);
                add.setStatus(status);
                add.setImagelink(imgLink);
                add.setId(id);
                objlist.add(add);
                dataBaseHelper.addSMS(category, status, imgLink);
                if(i==data_array.length()-1){
                    lastId=id;
                    Log.d("LAstID","LastId"+lastId);
                    new SendLastID().execute();
                    }
                }
                //new ListAdapter(CatagoryActivity.this, objlist).notifyDataSetChanged();
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
        class SendLastID extends AsyncTask<String,Void,Void> {
            private Exception exception;
            @Override
            protected Void doInBackground(String... urls) {
                // TODO Auto-generated method stub
                 //send last id to php server
                HttpClient httpclient = new DefaultHttpClient();

                //String string2 = "B";
                HttpPost httppost = new HttpPost("askmanu.in/demo.php?id="+lastId);
                //HttpResponse response = (HttpResponse) httpclient.execute(httppost);
                 try {
                        // Execute HTTP Post Request
                        HttpResponse response = (HttpResponse) httpclient.execute(httppost);
                        //int status = response.getStatusLine().getStatusCode();
                        //System.out.println("data posted, status = " + status);

                    } catch (ClientProtocolException e) {
                        // TODO Auto-generated catch block
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                    }

                return null;
            }

            @Override
            protected void onPostExecute(Void aVoid) {
                super.onPostExecute(aVoid);
            }
        }

Logcat - java.lang.RuntimeException: An error occured while executing doInBackground()

05-11 15:14:39.933: E/AndroidRuntime(23721): FATAL EXCEPTION: AsyncTask #4
05-11 15:14:39.933: E/AndroidRuntime(23721): Process: marathi.sms.collection, PID: 23721
05-11 15:14:39.933: E/AndroidRuntime(23721): java.lang.RuntimeException: An error occured while executing doInBackground()
05-11 15:14:39.933: E/AndroidRuntime(23721):    at android.os.AsyncTask$3.done(AsyncTask.java:304)
05-11 15:14:39.933: E/AndroidRuntime(23721):    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
05-11 15:14:39.933: E/AndroidRuntime(23721):    at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
05-11 15:14:39.933: E/AndroidRuntime(23721):    at java.util.concurrent.FutureTask.run(FutureTask.java:242)
05-11 15:14:39.933: E/AndroidRuntime(23721):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
05-11 15:14:39.933: E/AndroidRuntime(23721):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
05-11 15:14:39.933: E/AndroidRuntime(23721):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
05-11 15:14:39.933: E/AndroidRuntime(23721):    at java.lang.Thread.run(Thread.java:818)
05-11 15:14:39.933: E/AndroidRuntime(23721): Caused by: java.lang.IllegalStateException: Target host must not be null, or set in parameters. scheme=null, host=null, path=askmanu.in/demo.php
05-11 15:14:39.933: E/AndroidRuntime(23721):    at org.apache.http.impl.client.DefaultRequestDirector.determineRoute(DefaultRequestDirector.java:624)
05-11 15:14:39.933: E/AndroidRuntime(23721):    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:312)
05-11 15:14:39.933: E/AndroidRuntime(23721):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:580)
05-11 15:14:39.933: E/AndroidRuntime(23721):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:503)
05-11 15:14:39.933: E/AndroidRuntime(23721):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:481)
05-11 15:14:39.933: E/AndroidRuntime(23721):    at marathi.sms.collection.CatagoryActivity$SendLastID.doInBackground(CatagoryActivity.java:202)
05-11 15:14:39.933: E/AndroidRuntime(23721):    at marathi.sms.collection.CatagoryActivity$SendLastID.doInBackground(CatagoryActivity.java:1)
05-11 15:14:39.933: E/AndroidRuntime(23721):    at android.os.AsyncTask$2.call(AsyncTask.java:292)
05-11 15:14:39.933: E/AndroidRuntime(23721):    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
05-11 15:14:39.933: E/AndroidRuntime(23721):    ... 4 more
sayali
  • 13
  • 7

2 Answers2

1
class SendLastID extends AsyncTask<Void, Void, Void> {

    private Exception exception;

    protected Void doInBackground(Void... urls) {
        if(i==data_array.length()-1){
                String lastId=id;
Log.d("LAstID","LastId"+lastId);

                 //send last id to php server
                HttpClient httpclient = new DefaultHttpClient();

                //String string2 = "B";
                HttpPost httppost = new HttpPost("http://askmanu.in/demo.php?id=" + lastId);
                //HttpResponse response = (HttpResponse) httpclient.execute(httppost);
                 try {
                        // Execute HTTP Post Request
                        HttpResponse response = (HttpResponse) httpclient.execute(httppost);
                        //int status = response.getStatusLine().getStatusCode();
                        //System.out.println("data posted, status = " + status);

                    } catch (ClientProtocolException e) {
                        // TODO Auto-generated catch block
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                    }


            }
    }

    protected void onPostExecute(Void aVoid ) {
        // TODO: check this.exception 
        // TODO: do something with the feed
    }
}

Run the above class as

new SendLastID().execute(); //you ca
Muhammad Younas
  • 1,543
  • 1
  • 22
  • 32
0

Use Asynck Task For call WebApi

private class WebApiAsynck extends AsyncTask<Void,Void,Void>{

        ProgressDialog progressDialog = new ProgressDialog(MainActivity.this)
        @Override
        protected void onPreExecute() {
            super.onPreExecute();

            progressDialog.show();
        }

        @Override
        protected Void doInBackground(Void... voids) {

            if(i==data_array.length()-1){
                String lastId=id;
                Log.d("LAstID", "LastId" + lastId);

                //send last id to php server
                HttpClient httpclient = new DefaultHttpClient();

                //String string2 = "B";
                HttpPost httppost = new HttpPost("http://askmanu.in/demo.php?id=" + lastId);
                //HttpResponse response = (HttpResponse) httpclient.execute(httppost);
                try {
                    // Execute HTTP Post Request
                    HttpResponse response = (HttpResponse) httpclient.execute(httppost);
                    //int status = response.getStatusLine().getStatusCode();
                    //System.out.println("data posted, status = " + status);

                } catch (ClientProtocolException e) {
                    // TODO Auto-generated catch block
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                }


            }
            return null;
        }


        @Override
        protected void onPostExecute(Void aVoid) {
            super.onPostExecute(aVoid);

            progressDialog.cancel();
            progressDialog.dismiss();
        }
    }

// To Run Asynck Task

 WebApiAsynck webApiAsynck = new WebApiAsynck();
 webApiAsynck.execute();
Vanraj Ghed
  • 1,261
  • 11
  • 23