方法一
public static void toPostFile(String url){
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(url);
String boundary = "-------------------------" + UUID.randomUUID().toString();
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setCharset(StandardCharsets.UTF_8);
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.setBoundary(boundary);
builder.addBinaryBody("file", new File("C:\\Users\\1\\Desktop\\新建文本文档.txt"));
builder.addTextBody("userId", "123");
HttpEntity multipart = builder.build();
httpPost.setEntity(multipart);
try {
HttpResponse response = httpClient.execute(httpPost);
HttpEntity responseEntity = response.getEntity();
String responseBody = EntityUtils.toString(responseEntity);
System.out.println(responseBody);
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
方法二
public static void sendMultipartRequestdd(String url) throws IOException {
XWPFDocument document = new XWPFDocument();
document.createParagraph().createRun().setText("Hello, POI!");
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
document.write(byteArrayOutputStream);
document.close();
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(url);
String boundary = "-------------------------" + UUID.randomUUID().toString();
httpPost.setHeader("Content-Type", "multipart/form-data; boundary=" + boundary);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setCharset(StandardCharsets.UTF_8);
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.setBoundary(boundary);
builder.addBinaryBody("file", byteArrayOutputStream.toByteArray(), ContentType.create("application/vnd.openxmlformats-officedocument.wordprocessingml.document"), "陈诞.docx");
httpPost.setEntity(builder.build());
try (CloseableHttpResponse response = httpClient.execute(httpPost)) {
String responseString = EntityUtils.toString(response.getEntity());
System.out.println(responseString);
}
}
关键地方,设置这几个即可解决乱码问题
builder.setCharset(StandardCharsets.UTF_8);
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.setBoundary(boundary);