2

I am uploading an image to server. There is some error in Asynctask while I do .addpart with the fileupload. I am new to this so please help me. The variable filepath has some issues in Asynctask according to me. My manifest.xml file has the required permissions.

public class UploadActivity extends Activity{
private String filePath = null;
private Button btnUpload;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_upload);
    btnUpload = (Button) findViewById(R.id.btnUpload);
    // Receiving the data from previous activity
    Intent i = getIntent();

    // image or video path that is captured in previous activity
    filePath = i.getStringExtra("filePath");

    btnUpload.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // uploading the file to server
            new Upload().execute();
        }
    });
}
/**
 * Uploading the file to server
 * */
private class Upload extends AsyncTask<Void, Integer, String> {
    @Override
    protected String doInBackground(Void... params) {
        return uploadFile();
    }

    @SuppressWarnings("deprecation")
    private String uploadFile() {
        String responseString = null;
        try {
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("http://192.168.1.102/fileUpload.php");

           MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
           File sourceFile = new File(filePath);
            // Adding file data to http body
            entity.addPart("image", new FileBody(sourceFile));
            totalSize = entity.getContentLength();
            httppost.setEntity(entity);

            // Making server call
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity r_entity = response.getEntity();

            int statusCode = response.getStatusLine().getStatusCode();
            if (statusCode == 200) {
                // Server response
                responseString = EntityUtils.toString(r_entity);
            } else {
                responseString = "Error occurred! Http Status Code: "
                        + statusCode;
            }
        } catch (ClientProtocolException e) {
            responseString = e.toString();
        } catch (IOException e) {
            responseString = e.toString();
        }
        return responseString;
    }

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

Error log:

java.lang.RuntimeException: An error occured while executing doInBackground()
        at android.os.AsyncTask$3.done(AsyncTask.java:278)
        at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
        at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
        at java.util.concurrent.FutureTask.run(FutureTask.java:137)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
        at java.lang.Thread.run(Thread.java:864)
 Caused by: java.lang.NoClassDefFoundError: org.apache.http.entity.ContentType
        at org.apache.http.entity.mime.content.FileBody.<init>(FileBody.java:89)
        at com.example.apurwa.camera.UploadActivity$Upload.uploadFile(UploadActivity.java:104)
        at com.example.apurwa.camera.UploadActivity$Upload.doInBackground(UploadActivity.java:91)
        at com.example.apurwa.camera.UploadActivity$Upload.doInBackground(UploadActivity.java:83)
        at android.os.AsyncTask$2.call(AsyncTask.java:264)
Sami Eltamawy
  • 9,874
  • 8
  • 48
  • 66
user3174740
  • 21
  • 1
  • 4

2 Answers2

1

Your problem most probably is that you are not importing org.apache.http library correctly. That's why your crash giving you java.lang.NoClassDefFoundError

What you have to do is to make sure that you are importing the library correctly. So if you are using Eclipse, then download the JAR file form this link

If you are using Android Studio, then make sure of your dependencies in the Gradle file from this link

Also have a look on this question, it discusses similar issue to yours

Community
  • 1
  • 1
Sami Eltamawy
  • 9,874
  • 8
  • 48
  • 66
0

Add library containing org.apache.http.entity.ContentType to build path.

Eldhose M Babu
  • 14,382
  • 8
  • 39
  • 44