httpclient流转发乱码解决
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.setCharset(Charset.forName(“utf-8”));//设置请求的编码格式
builder.addBinaryBody(“file”, file.getInputStream(), ContentType.MULTIPART_FORM_DATA, fileName);// 文件流
//乱码的解决
StringBody parent_dir = new StringBody(map.get(“parent_dir”), Charset.forName(“utf-8”));
builder.addPart(“parent_dir”, parent_dir);
StringBody filename = new StringBody(fileName, Charset.forName(“utf-8”));
builder.addPart(“filename”, parent_dir);
package com.weixin.utils;
import com.ruoyi.framework.web.domain.server.Sys;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.content.StringBody;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.nio.charset.Charset;
import java.util.*;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
@Component
public class HttpClientUtils {
private static String url;
@Value("${seafile.url}")
public void setUrl(String url) {
this.url = url;
}
//构造http的put请求
public static String sendPost(String url, Map<String, String> headmap, Map<String, String> dataMap) {
// 第三方服务器请求地址
CloseableHttpClient httpClient = HttpClients.createDefault();
String result = "";
try {
HttpPost httpPost = new HttpPost(url);
Set set = headmap.keySet();
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) {
String key = iterator.next();
httpPost.setHeader(key, headmap.get(key));
}
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
if (dataMap != null) {
Set dataset = dataMap.keySet();
iterator = dataset.iterator();
while (iterator.hasNext()) {
String key = iterator.next();
String value = String.valueOf(dataMap.get(key));
builder.addTextBody(key, value);// 类似浏览器表单提交,对应input的name和value
}
}
HttpEntity entity = builder.build();
httpPost.setEntity(entity);
HttpResponse response = httpClient.execute(httpPost);// 执行提交
HttpEntity responseEntity = response.getEntity();
if (responseEntity != null) {
// 将响应内容转换为字符串
result = EntityUtils.toString(responseEntity, Charset.forName("UTF-8"));
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}
//构造httpclient的get请求
public static String sendGet(String url, Map<String, String> headmap, Map<String, String> dataMap) {
// 第三方服务器请求地址
CloseableHttpClient httpClient = HttpClients.createDefault();
String result = "";
try {
HttpGet httpPost = new HttpGet(url);
Set set = headmap.keySet();
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) {
String key = iterator.next();
httpPost.setHeader(key, headmap.get(key));
}
HttpResponse response = httpClient.execute(httpPost);// 执行提交
HttpEntity responseEntity = response.getEntity();
if (responseEntity != null) {
// 将响应内容转换为字符串
result = EntityUtils.toString(responseEntity, Charset.forName("UTF-8"));
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}
//将流转发到文件服务器
public static String httpClientUploadFile(MultipartFile file, Map<String, String> map) {
// 第三方服务器请求地址
CloseableHttpClient httpClient = HttpClients.createDefault();
String result = "";
try {
String fileName = file.getOriginalFilename();
//构建文件的上传地址
String url = map.get("url").replace("\"", "").replaceAll("\\s+", "");
HttpPost httpPost = new HttpPost(url);
httpPost.setHeader("Authorization", map.get("Authorization"));
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.setCharset(Charset.forName("utf-8"));//设置请求的编码格式
builder.addBinaryBody("file", file.getInputStream(), ContentType.MULTIPART_FORM_DATA, fileName);// 文件流
//乱码的解决
StringBody parent_dir = new StringBody(map.get("parent_dir"), Charset.forName("utf-8"));
builder.addPart("parent_dir", parent_dir);
StringBody filename = new StringBody(fileName, Charset.forName("utf-8"));
builder.addPart("filename", parent_dir);
// builder.addTextBody("filename", fileName); // 类似浏览器表单提交,对应input的name和value
// builder.addTextBody("parent_dir", map.get("parent_dir"));
// System.out.println(map.get("parent_dir"));
HttpEntity entity = builder.build();
httpPost.setEntity(entity);
HttpResponse response = httpClient.execute(httpPost);// 执行提交
HttpEntity responseEntity = response.getEntity();
if (responseEntity != null) {
// 将响应内容转换为字符串
result = EntityUtils.toString(responseEntity, Charset.forName("UTF-8"));
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}
//编写delete的httpclient的命令
public static String HttpClientDetele(String url, Map<String, String> headmap) {
CloseableHttpClient httpClient = HttpClients.createDefault();
String res = "";
try {
HttpDelete httpDelete = new HttpDelete(url);
if (headmap != null) {
Set set = headmap.keySet();
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) {
String key = iterator.next();
httpDelete.setHeader(key, headmap.get(key));
}
}
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.setCharset(Charset.forName("utf-8"));//设置请求的编码格式
HttpResponse response = httpClient.execute(httpDelete);// 执行提交
HttpEntity responseEntity = response.getEntity();
if (responseEntity != null) {
// 将响应内容转换为字符串
res = EntityUtils.toString(responseEntity, Charset.forName("UTF-8"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return res;
}
//用户分享的专用的http请求
public static String sharelibusers(String aaurl, Map<String, String> headmap, String[] usernames) {
// 第三方服务器请求地址
CloseableHttpClient httpClient = HttpClients.createDefault();
String result = "";
try {
//添加用户的请求
String param="";
for (String username : usernames) {
param=param+username+",";
}
aaurl=aaurl+param;
System.out.println(aaurl);
HttpPut httpPost = new HttpPut(aaurl);
Set set = headmap.keySet();
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) {
String key = iterator.next();
httpPost.setHeader(key, headmap.get(key));
}
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
HttpEntity entity = builder.build();
httpPost.setEntity(entity);
HttpResponse response = httpClient.execute(httpPost);// 执行提交
HttpEntity responseEntity = response.getEntity();
if (responseEntity != null) {
// 将响应内容转换为字符串
result = EntityUtils.toString(responseEntity, Charset.forName("UTF-8"));
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}
public static void main(String[] args) throws IOException, InterruptedException {
Map<String, String> map = new HashMap<>();
map.put("Authorization", "Token " + "b2b25fd71528da0ee3023c1362d5bc92bb101ae5");
String aaurl = HttpUtils.scanUrl(("http://127.0.0.1:8000" + "/api2/shared-repos/" + "fb92725b-ddcc-4b8e-9fa1-ec4465af4566/?" + "share_type=personal&permission=r&users="));
// for(int i=0;i<100;i+=10){
// Thread thread=new ShareThread(aaurl,i,10);
// thread.start();
// }
List<String> list=new ArrayList<>();
for(int i=0;i<120;i++){
list.add(i+"@ruijie.com.cn");
}
String[] usernames=list.toArray(new String[list.size()]);
String res=HttpClientUtils.sharelibusers(aaurl,map,usernames);
System.out.println(res);
}
}