关于HttpClient上传中文乱码的解决办法
2018-07-30 12:05
756 查看
使用过HttpClient的人都知道可以通过addTextBody方法来添加要上传的文本信息,但是,如果要上传中文的话,或还有中文名称的文件会出现乱码的问题,解决办法其实很简单:
第一步:设置MultipartEntityBuilder的编码方式为UTF-8。
builder.setCharset(Charset.forName(HTTP.UTF_8));//设置请求的编码格式
第二步:创建ContentType对象,指定UTF-8编码。
ContentType contentType= ContentType.create(HTTP.PLAIN_TEXT_TYPE, HTTP.UTF_8);
第三步:使用addPart+ StringBody代替addTextBody。如:
StringBody stringBody=new StringBody("中文乱码",contentType); builder.addPart("test",stringBody);
附上完整代码:
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;
【原文地址】
相关文章推荐
- 关于HttpClient上传中文乱码的解决办法
- Android 关于HttpClient上传中文乱码的解决办法
- 关于HttpClient上传中文乱码的解决办法
- 利用FTPClient上传的文件中中文名字乱码解决办法
- restful httpclient request中文乱码解决办法
- Content-Disposition 文件上传、下载 中文乱码 HTTP头 解决办法 Java Jersey
- Servlet:实现多个文件上传,上传中文文件乱码解决办法
- 关于perl中中文乱码的解决办法
- Ext.data.HttpProxy传参的中文乱码解决办法
- Intellij idea 控制台及RestClient中文乱码解决办法
- 关于get和post请求中文乱码的解决办法
- HttpClient post中文乱码解决
- 关于FTP服务器上传下载的代码中文乱码的解决方法
- 关于JAVA中URL传递中文参数,取值是乱码的解决办法
- httpclient3.0 上传文件名及field中文解决方法
- Servlet:实现多个文件上传,上传中文文件乱码解决办法
- 关于ASP.NET用VS2012出现数据库内容汉字乱码(中文乱码)或者汉字变问号(中文变问号)的解决办法,非常简单。
- 关于JAVA中URL传递中文参数,取值是乱码的解决办法
- 关于Cocos C++ http 有中文参数 服务器接收乱码问题解决!
- 关于安卓手机微信浏览器中使用XMLHttpRequest 2上传图片显示字节数为0的解决办法