java后台发起上传文件的post请求(http和https)

分享一下我的偶像大神的人工智能教程!http://blog.csdn.net/jiangjunshow

也欢迎转载我的文章,转载请注明出处 https://blog.csdn.net/aabbyyz

一、http post
对于文件上传,客户端通常就是页面,在页面里实现上传文件不是什么难事,写个form,加上enctype = "multipart/form-data",在写个接收的就可以了,没什么难的。如:
  1.   
  2.   
  3.   
  4. Hello World!  
  5.   
  6.   
  7.        
  8.            

    文件1:

      
  9.            

    文件:

      
  10.            

    其他信息:

      
  11.            

      
  12.     
  13.   
  14.   

如果要用java.net.HttpURLConnection来实现文件上传,还真有点搞头, 实现思路和具体步骤就是模拟页面的请求,页面发出的格式如下:
  1. -----------------------------7da2e536604c8  
  2. Content-Disposition: form-data; name="luid"  
  3.   
  4. 123  
  5. -----------------------------7da2e536604c8  
  6. Content-Disposition: form-data; name="file1"; filename="D:\haha.txt"  
  7. Content-Type: text/plain  
  8.   
  9. haha  
  10.   hahaha  
  11. -----------------------------7da2e536604c8  
  12. Content-Disposition: form-data; name="file"; filename="D:\huhu.png"  
  13. Content-Type: application/octet-stream  
  14.   
  15. 这里是图片的二进制数据 
  16. -----------------------------7da2e536604c8--
上面username是form表单中的文本参数,值为123,file1是form表单中上传的文本文件。file是form表单中上传的其他类型的文件,他们的Content-Type不一样。
知道了这些,就可以编写代码来模拟了,这里只上传一个文件file,是张图片,附上代码的截图:
java后台发起上传文件的post请求(http和https)_第1张图片

java后台发起上传文件的post请求(http和https)_第2张图片
以上的空行"\r\n"是比较严格的,要换行或者换两行,都是根据格式来的。

二、https post
一般都是http的请求,但现在也有越来越多的外部接口采用https的方式来调用。比如这次工作中需要调用的FaceId他们的身份证识别接口,这个接口就是https的,而且传递的参数里还需要身份证照片,这明显是个文件。如下:

java后台发起上传文件的post请求(http和https)_第3张图片

java后台发起https的文件上传请求的原理以及整个步骤和http的基本一致,只是这次的URLConnection是HttpsURLConnection,而且由于https的请求需要签名等安全认证,所以会在设置HttpsURLConnection时需要多设置两个属性,如下的setSSLSocketFactory()和setHostnameVerifier():
java后台发起上传文件的post请求(http和https)_第4张图片
所需要的TrustAnyTrustManager类和TrustAnyHostnameVerifier类代码如下:
java后台发起上传文件的post请求(http和https)_第5张图片
其他的代码就和HttpURLConnection的一样了。

以上的代码都是使用JDK自带的net工具类,然后模拟页面的form发出的请求来完成的,如果想使用HttpClient来完成发送请求也是可以的,并且更加简单明了,不需要自己写模拟的步骤。因为是第三方工具包,需引入对应jar包:
 
         org.apache.httpcomponents 
          httpclient 
         4.5.2         
 
 
         org.apache.httpcomponents 
          httpmime 
         4.5.2         
 
编写的代码如下:
java后台发起上传文件的post请求(http和https)_第6张图片
以上代码都是经过测试的测试代码,你可以自己封装好以供自己今后使用(ps:别想复制,代码都是图片,因为我在沙盒内,代码复制不出来0.0)!

java后台发起上传文件的post请求(http和https)_第7张图片

给我偶像的人工智能教程打call!http://blog.csdn.net/jiangjunshow

你可能感兴趣的:(java后台发起上传文件的post请求(http和https))