java後臺發起上傳檔案的post請求 http和https
阿新 • • 發佈:2018-12-10
一、http post
對於檔案上傳,客戶端通常就是頁面,在頁面裡實現上傳檔案不是什麼難事,寫個form,加上enctype = "multipart/form-data",在寫個接收的就可以了,沒什麼難的。如:
以上的空行"\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)!
- <!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>
- -----------------------------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--
再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!希望你也加入到我們人工智慧的隊伍中來!http://www.captainbed.net