美文网首页
HttpClient4 上传文件中文乱码问题

HttpClient4 上传文件中文乱码问题

作者: Aniwhel | 来源:发表于2017-07-30 22:21 被阅读0次

    使用HttpClient上传文件,如文件名为中文,会出现中文乱码问题,解决方法如下:

    1. 添加上传格part为UTF-8编码和浏览器兼容格式
    MultipartEntityBuilder builder = MultipartEntityBuilder.create();
    builder.setCharset(Charset.forName("UTF-8"));//设置请求的编码格式
    builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);//设置浏览器兼容模式
    
    1. 表单数据设置编码
    StringBody stringBody = new StringBody("中文乱码", contentType);
    builder.addPart("test", stringBody);   
    

    举例如下:

    public boolean uploadFiles(String url, File file, Map<String, String> params) throws Exception {
    
            ContentType contentType = ContentType.create("application/octet-stream", "UTF-8");
            HttpClient client = HttpClientBuilder.create().build();// 开启一个客户端 HTTP 请求
            HttpPost post = new HttpPost(url);//创建 HTTP POST 请求
    
            /// 关注builder的操作
            MultipartEntityBuilder builder = MultipartEntityBuilder.create();
            builder.setCharset(Charset.forName("UTF-8"));//设置请求的编码格式
            builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);//设置浏览器兼容模式
    
            builder.addBinaryBody("file", file);
            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;
        }
    

    相关文章

      网友评论

          本文标题:HttpClient4 上传文件中文乱码问题

          本文链接:https://www.haomeiwen.com/subject/brvklxtx.html