java後臺發起上傳檔案的post請求(http和https)
阿新 • • 發佈:2018-11-10
分享一下我的偶像大神的人工智慧教程!http://blog.csdn.net/jiangjunshow
也歡迎轉載我的文章,轉載請註明出處 https://blog.csdn.net/aabbyyz
一、http post 對於檔案上傳,客戶端通常就是頁面,在頁面裡實現上傳檔案不是什麼難事,寫個form,加上enctype = "multipart/form-data",在寫個接收的就可以了,沒什麼難的。如:- <!DOCTYPE html>
- <html>
- <head>
- <title>Hello World!</title>
- </head>
- <body>
- <form method="POST" enctype="multipart/form-data" action="/XXX">
- <p>檔案1:<input type="file" name="file1" /></p>
- <p>檔案:<input type="file" name="file" /></p>
- <p>其他資訊:<input name="luid" /></p>
- <p><input type="submit" value="上傳" /></p>
- </form>
- </body>
- </html>
如果要用java.net.HttpURLConnection來實現檔案上傳,還真有點搞頭, 實現思路和具體步驟就是模擬頁面的請求,頁面發出的格式如下:
- -----------------------------7da2e536604c8
- Content-Disposition: form-data; name="luid"
- 123
- -----------------------------7da2e536604c8
- Content-Disposition: form-data; name="file1"; filename="D:\haha.txt"
- Content-Type: text/plain
- haha
- hahaha
- -----------------------------7da2e536604c8
- Content-Disposition: form-data; name="file"; filename="D:\huhu.png"
- Content-Type: application/octet-stream
- 這裡是圖片的二進位制資料
- -----------------------------7da2e536604c8--
以上的空行"\r\n"是比較嚴格的,要換行或者換兩行,都是根據格式來的。
二、https post 一般都是http的請求,但現在也有越來越多的外部介面採用https的方式來呼叫。比如這次工作中需要呼叫的FaceId他們的身份證識別介面,這個介面就是https的,而且傳遞的引數裡還需要身份證照片,這明顯是個檔案。如下:
java後臺發起https的檔案上傳請求的原理以及整個步驟和http的基本一致,只是這次的URLConnection是HttpsURLConnection,而且由於https的請求需要簽名等安全認證,所以會在設定HttpsURLConnection時需要多設定兩個屬性,如下的setSSLSocketFactory()和setHostnameVerifier():
所需要的TrustAnyTrustManager類和TrustAnyHostnameVerifier類程式碼如下:
其他的程式碼就和HttpURLConnection的一樣了。
以上的程式碼都是使用JDK自帶的net工具類,然後模擬頁面的form發出的請求來完成的,如果想使用HttpClient來完成傳送請求也是可以的,並且更加簡單明瞭,不需要自己寫模擬的步驟。因為是第三方工具包,需引入對應jar包: <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.2</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpmime</artifactId> <version>4.5.2</version> </dependency> 編寫的程式碼如下:
以上程式碼都是經過測試的測試程式碼,你可以自己封裝好以供自己今後使用(ps:別想複製,程式碼都是圖片,因為我在沙盒內,程式碼複製不出來0.0)!
給我偶像的人工智慧教程打call!http://blog.csdn.net/jiangjunshow