android vollery post图片上传,如何在Android中使用Volley发送“multipart/form-data”POST

我可能是错了这一点,但我认为你需要实现自己的com.android.volley.toolbox.HttpStack为此,因为默认的(HurlStack如果版本> Gingerbread或HttpClientStack)不处理multipart / form-data 。

编辑:

确实我错了。我能够使用MultipartEntity在请求这样做:

public class MultipartRequest extends Request {

private MultipartEntity entity = new MultipartEntity();

private static final String FILE_PART_NAME = "file";

private static final String STRING_PART_NAME = "text";

private final Response.Listener mListener;

private final File mFilePart;

private final String mStringPart;

public MultipartRequest(String url, Response.ErrorListener errorListener, Response.Listener listener, File file, String stringPart)

{

super(Method.POST, url, errorListener);

mListener = listener;

mFilePart = file;

mStringPart = stringPart;

buildMultipartEntity();

}

private void buildMultipartEntity()

{

entity.addPart(FILE_PART_NAME, new FileBody(mFilePart));

try

{

entity.addPart(STRING_PART_NAME, new StringBody(mStringPart));

}

catch (UnsupportedEncodingException e)

{

VolleyLog.e("UnsupportedEncodingException");

}

}

@Override

public String getBodyContentType()

{

return entity.getContentType().getValue();

}

@Override

public byte[] getBody() throws AuthFailureError

{

ByteArrayOutputStream bos = new ByteArrayOutputStream();

try

{

entity.writeTo(bos);

}

catch (IOException e)

{

VolleyLog.e("IOException writing to ByteArrayOutputStream");

}

return bos.toByteArray();

}

@Override

protected Response parseNetworkResponse(NetworkResponse response)

{

return Response.success("Uploaded", getCacheEntry());

}

@Override

protected void deliverResponse(String response)

{

mListener.onResponse(response);

}

}

它是相当原始,但我试图与一个图像和一个简单的字符串,它的工作原理。响应是一个占位符,在这种情况下返回响应字符串没有什么意义。我有问题使用apache httpmime使用MultipartEntity所以我用这个https://code.google.com/p/httpclientandroidlib/不知道如果有一个更好的方法。

希望它有帮助。

编辑

你可以使用httpmime而不使用httpclientandroidlib,唯一的依赖是httpcore。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值