Skip to content

Instantly share code, notes, and snippets.

@maheshwarLigade
Forked from ishitcno1/MultipartRequest.java
Created February 11, 2016 20:05
Show Gist options
  • Select an option

  • Save maheshwarLigade/cb2d9991dbfeedc819f8 to your computer and use it in GitHub Desktop.

Select an option

Save maheshwarLigade/cb2d9991dbfeedc819f8 to your computer and use it in GitHub Desktop.
volley multipart request, post file image, android.
package com.meishixing.tripschedule.util;
import com.android.volley.AuthFailureError;
import com.android.volley.NetworkResponse;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyLog;
import org.apache.http.HttpEntity;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.FileBody;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
/**
* Created by albert on 14-3-21.
*/
public class MultipartRequest extends Request<String> {
public static final String KEY_PICTURE = "mypicture";
public static final String KEY_PICTURE_NAME = "filename";
public static final String KEY_ROUTE_ID = "route_id";
private HttpEntity mHttpEntity;
private String mFilePath;
private String mRouteId;
private Response.Listener mListener;
public MultipartRequest(String url, String filePath, String routeId,
Response.Listener<String> listener,
Response.ErrorListener errorListener) {
super(Method.POST, url, errorListener);
mFilePath = filePath;
mRouteId = routeId;
mListener = listener;
mHttpEntity = buildMultipartEntity();
}
private HttpEntity buildMultipartEntity() {
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
File file = new File(mFilePath);
String fileName = file.getName();
FileBody fileBody = new FileBody(file);
builder.addPart(KEY_PICTURE, fileBody);
builder.addTextBody(KEY_PICTURE_NAME, fileName);
builder.addTextBody(KEY_ROUTE_ID, mRouteId);
MBLog.d("fileName: " + fileName);
return builder.build();
}
@Override
public String getBodyContentType() {
MBLog.d("content type: " + mHttpEntity.getContentType().getValue());
return mHttpEntity.getContentType().getValue();
}
@Override
public byte[] getBody() throws AuthFailureError {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
mHttpEntity.writeTo(bos);
MBLog.d("bos: " + bos.toString());
} catch (IOException e) {
VolleyLog.e("IOException writing to ByteArrayOutputStream");
}
return bos.toByteArray();
}
@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {
return Response.success("Uploaded", getCacheEntry());
}
@Override
protected void deliverResponse(String response) {
mListener.onResponse(response);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment