http/https協議使用jsoup文件上傳
依賴jsoup-1.8.2.jar
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.8.2</version>
</dependency> </div>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.8.2</version>
</dependency> </div>
[Java]代碼
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpStatus;
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.Connection.Response;
import javax.net.ssl.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.HashMap;
import java.util.Map;
/**
* Created by Jane on 2015/9/10.
*/
public class JsoupHttpRequest {
public static void main(String[] args) throws Exception {
String url = "http://localhost:8080/fileUpload";
File file = new File("/opt/fileUpload/index.jpg");
String fileRquestParam = "file";
Map<String, String> dataMap = new HashMap<String, String>();
dataMap.put("userName", "admin");
dataMap.put("md5", "12cd76nskju98zud7fda0f6c9wa54");
Response response = doPostFileRequest(url, dataMap, file, fileRquestParam);
System.out.println(response.statusMessage());
}
/**
* @param url 請求的Url
* @param paramMap 參數
* @param file 文件
* @param fileRequestParam form表單對應的文件name屬性名
* @return
* @throws Exception
*/
public static Response doPostFileRequest(String url, Map<String, String> paramMap, File file, String fileRequestParam) throws Exception {
if (StringUtils.isBlank(url)) {
throw new Exception("The request URL is blank.");
}
// Https請求
if (StringUtils.startsWith(url, "https")) {
trustEveryone();
}
Connection connection = Jsoup.connect(url);
connection.method(Connection.Method.POST);
connection.timeout(12000);
connection.header("Content-Type", "multipart/form-data");
connection.ignoreHttpErrors(true);
connection.ignoreContentType(true);
if (paramMap != null && !paramMap.isEmpty()) {
connection.data(paramMap);
}
try {
FileInputStream fis = new FileInputStream(file);
connection.data(fileRequestParam, file.getName(), fis);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
Response response = connection.execute();
if (response.statusCode() != HttpStatus.SC_OK) {
throw new Exception("http請求響應碼:" + response.statusCode() + "");
}
return response;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* 解決Https請求,返回404錯誤
*/
private static void trustEveryone() {
try {
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, new X509TrustManager[]{new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
}}, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(context.getSocketFactory());
} catch (Exception e) {
e.printStackTrace();
}
}
} 本文由用戶 RegPoate 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!