分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

关于HttpClient上传中文乱码的解决办法

发布时间:2023-09-06 02:06责任编辑:顾先生关键词:乱码

使用过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上传中文乱码的解决办法

原文地址:https://www.cnblogs.com/liaojie970/p/9389901.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved