参考博客网址:
http://www.creturn.com/html/2014-01-15-android-%E4%B8%8A%E4%BC%A0php-xutils-bug%E4%BF%AE%E5%A4%8D%E5%88%86%E6%9E%90%E8%BF%87%E7%A8%8B.html
作为全职PHPer偶尔需要客串下Androider,最近公司的一个项目需要Android的客户端(主要图片特效处理及其上传),自己就客串下Androider.
之前有过Android开发经验所以做这个挺顺手的,几乎所有东西直接github中拿过来改改就用,不过在处理图片上传的时候选择了xUtils这个
开源工具类,用起来确实比较好用,挺方便的,例如如下代码就可以实现上传:
为了印证我们的才行可以把charset加上去和去掉的进行对比看看是不是加了之后就收不到上传文件的信息。
其实根据HTTP协议来讲理论上加不加charset应该不会影响上传,但结果这个问题确实是由于charset引起的。
接下来就简单了找到根源解决就行,在源码里面进行搜索 boundary ,找到地方根据作者写的方法注释掉其中添加charset的代码:
protected String generateContentType( final String boundary, final Charset charset) { StringBuilder buffer = new StringBuilder(); buffer.append("multipart/" + multipartSubtype + "; boundary="); buffer.append(boundary); /*if (charset != null) { buffer.append("; charset="); buffer.append(charset.name()); }*/ return buffer.toString(); }
我找到的上面对应代码路径在com.lidroid.xutils.http.client.multipart包下的 MultipartEntity.java里面