1、maven的pom.xml文件中添加okhttp3的依赖:
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.6.0</version>
</dependency>
2、java代码:
这里主要注意中文乱码问题的处理以及跳过ssl认证问题的处理
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.concurrent.TimeUnit;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class UploadUtils {
public static void uploadFile(){
String path = "https://192.168.1.1:8080/upload/file"; //上传接口
OkHttpClient client = getUnsafeOkHttpClient(); //设置跳过所有ssl认证
File file = new File("C:\\xxxxx"); //要上传的文件路径
RequestBody fileBody = RequestBody.create(MediaType.parse("application/x-www-form-urlencoded;charset=utf-8") , file);
String name = "fileName"; //文件名称
try {
name = URLEncoder.encode(name, "UTF-8"); //文件名称编码,防止出现中文乱码
} catch (UnsupportedEncodingException e1) {
//TODO
}
//定义请求体,前面三个为表单中的string类型参数,第四个为需要上传的文件
MultipartBody mBody = new MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("fileSize" , "12123")
.addFormDataPart("time" , "234234")
.addFormDataPart("name" , name)
.addFormDataPart("file" , name , fileBody)
.build();
//设置为post请求,url后面为请求路径,header设置请求头(可以设置多个),post后面设置请求体
Request request = new Request.Builder().url(path).header("xxxx","xxxx").post(mBody).build();
//执行请求操作
try {
Response response = client.newCall(request).execute();
if(response.isSuccessful()){
String result = response.body().string();
System.out.println("获取到的响应信息为: "+result);
}
response.body().close();
} catch (Exception e) {
//TODO
}
}
public static OkHttpClient getUnsafeOkHttpClient() {
try {
final TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] chain,
String authType) throws CertificateException {
// TODO Auto-generated method stub
}
@Override
public void checkServerTrusted(X509Certificate[] chain,
String authType) throws CertificateException {
// TODO Auto-generated method stub
}
@Override
public X509Certificate[] getAcceptedIssuers() {
// TODO Auto-generated method stub
return new X509Certificate[]{};
}
}
};
final SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
final javax.net.ssl.SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
OkHttpClient.Builder builder = new OkHttpClient.Builder()
.connectTimeout(500, TimeUnit.MILLISECONDS)
.readTimeout(500, TimeUnit.MILLISECONDS);
builder.sslSocketFactory(sslSocketFactory);
builder.hostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String arg0, SSLSession arg1) {
// TODO Auto-generated method stub
return true;
}
});
return builder.build();
} catch (Exception e) {
//TODO
throw new RuntimeException(e);
}
}
/*
* private static File converMultipartFileToFile(MultipartFile multipartFile){ //将MultipartFile格式对象转File
File file = null;
try {
file = File.createTempFile("tmp", null);
multipartFile.transferTo(file);
file.deleteOnExit();
} catch (Exception e) {
e.printStackTrace();
}
return file;
}*/
}
本文介绍如何在Java项目中使用OkHttp3库进行文件上传,包括在Maven项目中添加依赖,处理中文乱码及跳过SSL验证,通过示例代码详细展示了上传过程。
840

被折叠的 条评论
为什么被折叠?



