import okhttp3.*
import java.io.*
import java.util.concurrent.TimeUnit;
public class OKHttpUtils{
/**
* http 链接超时时间
*/
private static final int minConnectTimeout = 3000;
/**
* http 写入超时时间
*/
private static final int minWriteTimeout = 3000;
/**
* http read 超时时间
*/
private static final int minReadTimeout = 3000;
/**
* http Async Call Timeout
*/
private static final int minCallTimeout = 3000;
/**
* http 链接池
*/
private static final int connectPoolSize = 1000;
private static ConnectionPool connectionPool = new ConnectionPool(connectionPoolSize,30,TimeUnit.MINUTES);
public static OKHttpClient getHttpClient(){
OKHttpClient client= new OKHttpClient.Builder()
.connectTimeout(minConnectTimeout ,TimeUnit.MILLISECONDS)
.readTimeout(minReadTimeout ,TimeUnit.MILLISECONDS)
.writeTimeout(minWriteTimeout ,TimeUnit.MILLISECONDS)
.callTimeout(minCallTimeout ,TimeUnit.MILLISECONDS)
.connectionPool(connectionPool)
.build();
return client;
}
public static InputStream downLoad2Stream(String url){
try{
OKHttpClient client = getHttpClient();
Request request = new Request.Builder()
.url(url).build();
Response response = null;
respone = client.newCall(request).execute();
// 转换成byte数组
return response.body.byteStream();
}catch(Exception e){
}
}
//上传流文件
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setContentType(MediaType.MULTIPART_FROM_DATA);
MutiValeMap<String ,Object> requestBody = new LinkedMutiValueMap<>();
requestBody.add("file",new UploadInputResource(inputStream,inputStream.available(),filenName));
requestBody.add("id",fileId);
requestBody.add("fileName",fileName);
HttpEntity<MultiValueMap> requestEntity = new HttpEntity<>(requestBody,httpHeaders);
String result = restTemplate.postForEntity(url,requestEntity,String.class).getBody();
//todo
}
public calss UploadInputResource extends InputStreamResource{
private int length;
private Sting fileName;
public UploadInputResource(inputStream,inputStream.available(),filenName)){
super(inputStream);
this.length = length;
this.fineName = fileName;
}
@Override 有异常就抛
public long contentLength(){
return this.length;
}
@Override
public String getFileName(){
return this.fileName();
}
}
//下载文件
HttpGet httpGetPack = new HttpGet(url);
HttpClient httpClient = HttpClientBuilder.create().build();
HttpResponse httpResponse = httpClient.execute(httpGetPack);
if(httpRespone != null){
//保存文件
try(InputStream downInputStream = httpResponse.getEntity().getContent()){
FileUtils.save(downInputStream,file.getAbsolutePath());
}
}
public static boolean save(InputStream inputStream ,String path){
try(OutputStream outputStream = new FileOutputStream(path)){
byte[] buffer = new byte[1024];
int size = 0;
while((size = inputStream.read(buffer))>0){
outputStream.write(buffer,0,size);
}
}catch(Exception e){
// todo
}
}
下载url文件转inputStream工具
于 2022-06-06 11:41:19 首次发布