uploadImg("your url", new String[]{ "C:\\Users\\po\\Desktop\\457880.jpg" });
public static void uploadImg(String urlStr, String[] files)
{
String end = "\r\n";
String PREFIX = "--";
String boundary = UUID.randomUUID().toString();
try
{
URL url = new URL(urlStr);
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
InputStream is = new FileInputStream(new File("C:\\Users\\po\\Desktop\\ssl.crt"));
// 证书锁定,直接用预埋的证书生成TrustManager
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(null);
keyStore.setCertificateEntry("ll", CertificateFactory.getInstance("X.509").generateCertificate(is));
// 通过TrustManager工厂生成TrustManagers
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
trustManagerFactory.init(keyStore);
TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();
// 初始化SSL上下文
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, trustManagers, null);
final HostnameVerifier hostnameVerifier = new HostnameVerifier()
{
@Override
public boolean verify(String hostname, SSLSession session)
{
return hostname.contains("xx.com.cn");
}
};
conn.setSSLSocketFactory(sslContext.getSocketFactory());
conn.setHostnameVerifier(hostnameVerifier);
conn.setRequestMethod("POST");
conn.setConnectTimeout(1000000);
conn.setRequestProperty("Accept-Encoding", "gzip");
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
conn.setRequestProperty("Host", "xxx.xxx.xxx");
conn.setRequestProperty("Charset", "utf-8");
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
StringBuilder builder = new StringBuilder();
DataOutputStream dos = new DataOutputStream(conn.getOutputStream());
builder.append(PREFIX + boundary + end);
builder.append("Content-Disposition: form-data; name=headImgFile;filename=" + System.currentTimeMillis() + ".jpg" + end);
builder.append("Content-Type:application/octet-stream" + end);
builder.append("Content-Transfer-Encoding:binary" + end + end);
dos.writeBytes(builder.toString());
File file = new File(files[0]);
FileInputStream fis = new FileInputStream(file);
byte[] buffer = new byte[4096];
int len;
while ((len = fis.read(buffer)) != -1)
{
System.out.println("uploading " + len);
dos.write(buffer, 0, len);
}
fis.close();
builder.append(end + PREFIX + boundary + PREFIX);
dos.writeBytes(builder.toString());
dos.flush();
dos.close();
conn.connect();
int responseCode = conn.getResponseCode();
if (responseCode == 200)
{
InputStream inputStream = conn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
System.out.println("response..." + URLDecoder.decode(reader.readLine()));
reader.close();
}
} catch (Exception e)
{
e.printStackTrace();
}
}