force close cause HTTP entity may not be null
<p>here a full code asyntask to Send Data Http</p>

<pre><code>private class MyAsyncTaskPupuk extends AsyncTask&lt;Void,Object ,Void&gt; {

boolean bNodata=false;
boolean bError=false;
@Override
protected Void doInBackground(Void... arg0) {
    bNodata=false;
    bError=false;
    recordCount=cursorSend.getCount();
    if (recordCount&lt;=0){//
        bNodata=true;
        return null;
    }
    cursorSend.moveToFirst();
    publishProgress(0,"Sending data started");
    //SystemClock.sleep(1000);
    CHamaRecord rec=new CHamaRecord();
    for (int i=0; i&lt;recordCount; i++){
        if (isCancelled()) break;
        rec.lID=cursorSend.getLong(0);
        rec.dLongitude=cursorSend.getDouble(1);
        rec.dLatitude=cursorSend.getDouble(2);
        rec.dAccuracy=cursorSend.getDouble(3);
        rec.sFilename=cursorSend.getString(4);
        rec.nUserId=cursorSend.getInt(5);
        rec.nRate=cursorSend.getInt(6);
        rec.lDate=cursorSend.getLong(7);
        rec.sSent=cursorSend.getString(8);
        rec.IDSite=cursorSend.getString(9);
        rec.alamatSite=cursorSend.getString(10);
        rec.komoditas=cursorSend.getString(11);
        rec.luasSite=cursorSend.getString(12);
        rec.petugas=cursorSend.getString(13);
        rec.jnsHama=cursorSend.getString(14);
        rec.jmlHama=cursorSend.getString(15);
        rec.sn=cursorSend.getString(16);
        rec.pn=cursorSend.getString(17);
        rec.manufaktur=cursorSend.getString(18);
        rec.lblHama=cursorSend.getString(19);
        rec.lblKomoditas=cursorSend.getString(20);
        rec.lblPetugas=cursorSend.getString(21);
        publishProgress(1,i,rec);
        if (!SendDataFoto(rec)){
            recordCount=i;
            bError=true;
            break;
        }
        else {
            //change flag sent
            rec.sSent=CGeneral.strSent;
            cDBPupuk.updateEntry(rec.lID, rec);
        }
        cursorSend.moveToNext();
    }
    return null;
}//doInBackground

private boolean SendDataFoto(CHamaRecord rec){


        String slon=String.format("%f", rec.dLongitude);
        String slat=String.format("%f", rec.dLatitude);
        String sacc=String.format("%f", rec.dAccuracy);
        String srate=String.format("%d",rec.nRate);
        String sid=String.format("%d",rec.nUserId);
        String ids=String.format(rec.IDSite);
        String alt=String.format(rec.alamatSite);
        String kmd=String.format(rec.komoditas);
        String ls=String.format(rec.luasSite);
        String op=String.format(rec.petugas);
        String jns=String.format(rec.jnsHama);
        String jml=String.format(rec.jmlHama);
        String sn=String.format(rec.sn);
        String pn=String.format(rec.pn);
        String mFact=String.format(rec.manufaktur);
        String lblhama=String.format(rec.lblHama);
        String lblKomoditas=String.format(rec.lblKomoditas);

        File file=new File(rec.sFilename);
        String sfname=file.getName();
        String cfname=file.getName();
        int i=0;
        String lfname=rec.sFilename;
        sfname = sfname.substring(0, sfname.lastIndexOf("."));
        Calendar cal=Calendar.getInstance();
        cal.setTime(new Date(rec.lDate));
        String sdat=CUtilities.DateToString(cal);


        String url;
        String spupuk;
        if (CGeneral.nPupukOrPelihara==CGeneral.ACTIVITY_FOR_PUPUK){
            url = CGlobalConfig.getURLRcvrPupuk();
            spupuk="Hama";
        }
        else{
            url = CGlobalConfig.getURLRcvrPeliharaImage();
            spupuk="pelihara";
        }

        Bitmap bmp=BitmapFactory.decodeFile(lfname);
        ByteArrayOutputStream bao = new ByteArrayOutputStream();

        bmp.compress(Bitmap.CompressFormat.JPEG, 90, bao);

        byte[] ba = bao.toByteArray();

        HttpEntity entity=null;

        try {

            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(url);
            ByteArrayBody bab = new ByteArrayBody(ba, spupuk+"_"+cfname);
            MultipartEntity reqEntity = new MultipartEntity(
            HttpMultipartMode.BROWSER_COMPATIBLE);
            reqEntity.addPart("image", bab);
            reqEntity.addPart("category", new StringBody(spupuk));
            reqEntity.addPart("file_name", new StringBody(spupuk+"_"+cfname));
            reqEntity.addPart("rate", new StringBody(srate));
            reqEntity.addPart("tgl", new StringBody(sdat));
            reqEntity.addPart("user_id", new StringBody(sid));
            reqEntity.addPart("latitude", new StringBody(slat));
            reqEntity.addPart("longitude", new StringBody(slon));
            reqEntity.addPart("accuracy", new StringBody(sacc));
            reqEntity.addPart("id_site", new StringBody(ids));
            reqEntity.addPart("alamat_site", new StringBody(alt));
            reqEntity.addPart("komoditas", new StringBody(kmd));
            reqEntity.addPart("luas_area", new StringBody(ls));
            reqEntity.addPart("petugas", new StringBody(op));
            reqEntity.addPart("jenis_hama", new StringBody(jns));
            reqEntity.addPart("jumlah_hama", new StringBody(jml));
            reqEntity.addPart("serial", new StringBody(sn));
            reqEntity.addPart("p_number", new StringBody(pn));
            reqEntity.addPart("manufaktur", new StringBody(mFact));

            httppost.setEntity(reqEntity);
            HttpResponse response = httpclient.execute(httppost);

            entity = response.getEntity();


        } catch (Exception e) {
            Log.e(e.getClass().getName(), e.getMessage());
        }
        String temp = null;
        try {
            temp = EntityUtils.toString(entity);
        } catch (ParseException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }



        if (temp.compareTo("SUCCESS") == 0) {
            publishProgress(0,"Send Ok");
            SystemClock.sleep(500);
            return true;
        }
        else{
            publishProgress(0,"Send Fail");
            return false;               
        }   

    }

@Override
    protected void onProgressUpdate(Object... arg) {
        Integer oi=(Integer)arg[0];
        String oStr;
        CHamaRecord rec;
        int flag=oi.intValue();
        int nVal;
        String str;
        TextView tvStatus=(TextView) layoutSendDialog.findViewById(R.id.tvPupukSendStatus);
        TextView tview;
        switch (flag) {
        case 0 :
            oStr=(String)arg[1];
            tvStatus.setText(oStr);
            break;
        case 1 :
            oi=(Integer)arg[1];
            rec=(CHamaRecord)arg[2];
            nVal=oi.intValue();
            str="Send record #"+String.format("%d",nVal);
            tvStatus.setText(str);
            str=String.format("%d", rec.lID);
            tview = (TextView) layoutSendDialog.findViewById(R.id.tvPupukSendID);  
            tview.setText(str);
            str=String.format(rec.IDSite);
            tview = (TextView) layoutSendDialog.findViewById(R.id.tvPupukSendIDSite);  
            tview.setText(str);
            str=String.format(rec.alamatSite);
            tview = (TextView) layoutSendDialog.findViewById(R.id.tvPupukSendAlamat);  
            tview.setText(str);
            str=String.format(rec.lblKomoditas);
            tview = (TextView) layoutSendDialog.findViewById(R.id.tvPupukSendKomoditas);  
            tview.setText(str);
            str=String.format(rec.luasSite);
            tview = (TextView) layoutSendDialog.findViewById(R.id.tvPupukSendLuas);  
            tview.setText(str);
            str=String.format(rec.lblPetugas);
            tview = (TextView) layoutSendDialog.findViewById(R.id.tvPupukSendPetugas);  
            tview.setText(str);
            str=String.format(rec.lblHama);
            tview = (TextView) layoutSendDialog.findViewById(R.id.tvPupukSendJenis);  
            tview.setText(str);
            str=String.format(rec.jmlHama);
            tview = (TextView) layoutSendDialog.findViewById(R.id.tvPupukSendJumlah);  
            tview.setText(str);
            str=String.format(rec.sn);
            tview = (TextView) layoutSendDialog.findViewById(R.id.tvPupukSendSerial);  
            tview.setText(str);
            str=String.format(rec.pn);
            tview = (TextView) layoutSendDialog.findViewById(R.id.tvPupukSendProduk);  
            tview.setText(str);
            str=String.format(rec.manufaktur);
            tview = (TextView) layoutSendDialog.findViewById(R.id.tvPupukSendManufaktur);  
            tview.setText(str);
            str=String.format("%+3.5f", rec.dLongitude);
            tview = (TextView) layoutSendDialog.findViewById(R.id.tvPupukSendLongitude);  
            tview.setText(str);
            str=String.format("%+3.5f", rec.dLatitude);
            tview = (TextView) layoutSendDialog.findViewById(R.id.tvPupukSendLatitude);  
            tview.setText(str);
            /*str=String.format("%2.2f", rec.dAccuracy);
            tview = (TextView) layoutSendDialog.findViewById(R.id.tvPupukSendAccuracy);  
            tview.setText(str);*/
            Date dt=new Date(rec.lDate);
            tview = (TextView) layoutSendDialog.findViewById(R.id.tvPupukSendDate);  
            tview.setText(dt.toLocaleString());
            /*str=String.format("%d", rec.nRate);
            tview = (TextView) layoutSendDialog.findViewById(R.id.tvPupukSendRating);  
            tview.setText(str);
            str=String.format("%d", rec.nUserId);
            tview = (TextView) layoutSendDialog.findViewById(R.id.tvPupukSendOperator);  
            tview.setText(str); */
            File file=new File(rec.sFilename);
            String fname=file.getName();
            tview = (TextView) layoutSendDialog.findViewById(R.id.tvPupukSendFilename);  
            tview.setText(fname);
            break;
        }
    }   
    //
    @Override
    protected void onPostExecute(Void unused) {
        TextView tvStatus=(TextView) layoutSendDialog.findViewById(R.id.tvPupukSendStatus);
        if (bNodata){
            tvStatus.setText("No data to be sent!!!");              
        }else {
            if (bError){
                tvStatus.setText("Fail at record #"+String.format("%d",recordCount));
            }
            else {
                tvStatus.setText("Sending Data : Finished");
            }
        }
//          dismissDialog(CGeneral.DIALOG_SEND);
    }
    protected void onCancelled(Void unused) {
        dismissDialog(CGeneral.DIALOG_SEND);
    }

}
</code></pre>

<p>the application work but
when i put wrong url or connection timeout, the application is force close .</p>

<p>here is my logcat</p>

<pre><code>01-25 10:11:27.554: ERROR/AndroidRuntime(2587): FATAL EXCEPTION: AsyncTask #1
01-25 10:11:27.554: ERROR/AndroidRuntime(2587): java.lang.RuntimeException: An error occured while executing doInBackground()
01-25 10:11:27.554: ERROR/AndroidRuntime(2587):     at android.os.AsyncTask$3.done(AsyncTask.java:200)
01-25 10:11:27.554: ERROR/AndroidRuntime(2587):     at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
01-25 10:11:27.554: ERROR/AndroidRuntime(2587):     at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
01-25 10:11:27.554: ERROR/AndroidRuntime(2587):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
01-25 10:11:27.554: ERROR/AndroidRuntime(2587):     at java.util.concurrent.FutureTask.run(FutureTask.java:138)
01-25 10:11:27.554: ERROR/AndroidRuntime(2587):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
01-25 10:11:27.554: ERROR/AndroidRuntime(2587):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
01-25 10:11:27.554: ERROR/AndroidRuntime(2587):     at java.lang.Thread.run(Thread.java:1019)
01-25 10:11:27.554: ERROR/AndroidRuntime(2587): Caused by: java.lang.IllegalArgumentException: HTTP entity may not be null
01-25 10:11:27.554: ERROR/AndroidRuntime(2587):     at org.apache.http.util.EntityUtils.toString(EntityUtils.java:110)
01-25 10:11:27.554: ERROR/AndroidRuntime(2587):     at org.apache.http.util.EntityUtils.toString(EntityUtils.java:146)
01-25 10:11:27.554: ERROR/AndroidRuntime(2587):     at hariff.ltis.inputhama.CInputHamaApp$MyAsyncTaskPupuk.SendDataFoto(CInputHamaApp.java:1307)
01-25 10:11:27.554: ERROR/AndroidRuntime(2587):     at hariff.ltis.inputhama.CInputHamaApp$MyAsyncTaskPupuk.doInBackground(CInputHamaApp.java:1040)
01-25 10:11:27.554: ERROR/AndroidRuntime(2587):     at hariff.ltis.inputhama.CInputHamaApp$MyAsyncTaskPupuk.doInBackground(CInputHamaApp.java:1)
01-25 10:11:27.554: ERROR/AndroidRuntime(2587):     at android.os.AsyncTask$2.call(AsyncTask.java:185)
01-25 10:11:27.554: ERROR/AndroidRuntime(2587):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
01-25 10:11:27.554: ERROR/AndroidRuntime(2587):     ... 4 more
01-25 10:11:27.570: DEBUG/u-blox(1308): ublox_stop :
01-25 10:11:27.570: WARN/ActivityManager(1308):   Force finishing activity hariff.ltis.mainmenu/hariff.ltis.inputhama.CInputHamaApp
</code></pre>

<p>force close in line <code>temp = EntityUtils.toString(entity);</code></p>

<p>how to fix that? so when i put wrong url or connection timeout, the application not force close and display message <code>"Send Failed"</code>.
?</p>

<p>BR</p>

<p>Alex</p>
