HttpClient上传文件到微信素材乱码问题解决
来源:互联网 发布:什么是淘宝客服工作 编辑:程序博客网 时间:2024/05/21 18:43
在开发微信第三方公众平台的时候,需要上传图片、语音等文件到微信服务器。当文件名存在中文时会出现乱码。网上搜了一大堆文章,大部讲什么设置编码啥的,放到微信素材上传这个场景就是用不了,试了各种方式,依然是乱码。
所有的文章在微信这个场景上都有两个大坑。下面我copy下别人的代码,然后标注出来:
原文链接如下:http://blog.csdn.net/fengyuzhengfan/article/details/40792529
HttpClient的上传代码,基本上都类似,我就不重复写了,直接贴一段他的代码:
-------------------------------------------------
ContentType contentType = ContentType.create(HTTP.PLAIN_TEXT_TYPE, HTTP.UTF_8);
HttpClient client=new DefaultHttpClient();// 开启一个客户端 HTTP 请求
HttpPost post = new HttpPost(url);//创建 HTTP POST 请求
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setCharset(Charset.forName(HTTP.UTF_8));//设置请求的编码格式
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);//设置浏览器兼容模式
int count=0;
for (File file:files) {
// FileBody fileBody = new FileBody(file);//把文件转换成流对象FileBody
// builder.addPart("file"+count, fileBody);
builder.addBinaryBody("file"+count, file);
count++;
}
builder.addTextBody("method", params.get("method"));//设置请求参数
builder.addTextBody("fileTypes", params.get("fileTypes"));//设置请求参数
StringBody stringBody=new StringBody("中文乱码",contentType);
builder.addPart("test", stringBody);
HttpEntity entity = builder.build();// 生成 HTTP POST 实体
post.setEntity(entity);//设置请求参数
HttpResponse response = client.execute(post);// 发起请求 并返回请求的响应
if (response.getStatusLine().getStatusCode()==200) {
return true;
}
return false;
-------------------------------------------------
上面高亮的两个地方就是在微信素材上传时的两个大坑。
1、当遇到乱码时,第一错觉就是设置请求的编码格式,恰恰在微信上传时,如果设置这个编码,就会导致多媒体文件丢失,上传不成功。(具体原因不明)
2、设置浏览器兼容模式,这个好多文章说,设置成BOWSER_COMPATIBLE 就不会乱码了,问题就出现在这里,设置模式时,应该设置成HttpMultipartMode.RFC6532
这样才是真正的不会出现乱码。
- HttpClient上传文件到微信素材乱码问题解决
- java上传文件乱码问题解决
- httpClient中post上传文件乱码
- 微信上传临时素材到httpclient上传文件引发的问题
- httpclient乱码问题解决
- struts 上传文件乱码问题解决方法
- OpenSolaris 文件上传文件名乱码问题解决
- 文件上传 FileItem 中文乱码问题解决
- Jsp Servlet +SmartUpload 实现文件上传.以及上传乱码问题解决.
- httpclient上传文件,同时带字符串参数 中文乱码问题
- httpclient上传文件及文件名中文乱码问题
- HttpClient PostMethod 中文乱码问题解决
- HTTPCLIENT MultipartEntity 上传中文乱码
- FTPClient上传和下载文件,中文乱码问题解决
- php文件上传后台存储中文乱码问题解决方案
- Struts2文件上传与下载中的中文乱码问题解决方案
- 上传jar文件到AIX系统乱码问题解决
- httpclient 上传文件
- Java内存管理
- sizeof与类,继承,virtual的种种(总结)
- iOS如何实现国际化(本地化)
- 算法的封装与切换——策略模式(三)
- Java构造和解析Json数据的两种方法详解二
- HttpClient上传文件到微信素材乱码问题解决
- SQL分组后内部排序
- hdu 1232, disjoint set, linked list vs. rooted tree, a minor but substantial optimization for path c
- MFC学习之路01 快捷键的生成方法
- 生成sqlite3.lib for bcb/vc
- 算法导论 第十三章:红黑树
- 字典树的应用 单词意义查找-C语言实现
- hadoop中最简单最简单的map-reduce
- 前台jsp控件获取java后台返回的值