日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

httpclient 多附件上传

發布時間:2023/12/9 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 httpclient 多附件上传 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

多附件上傳實例:

/*** 多附件上傳* @param host* @param uri* @param attachment 附件* @param param body參數* @return*/public String upload(String host, String uri, Map<String,String> attachment, Map<String, String> param) {logger.info("*****************request*****************");CloseableHttpClient httpClient = null;CloseableHttpResponse response = null;MultipartEntityBuilder builder = MultipartEntityBuilder.create();;File file = null;InputStream inputStream = null;String url = host + uri;String rst = "";try {httpClient = HttpClients.createDefault();logger.info("請求路徑: "+ url);HttpPost httpPost = new HttpPost(url);for(String fileName:attachment.keySet()){inputStream = this.getClass().getClassLoader().getResourceAsStream(attachment.get(fileName)); //獲取resources下的資源文件file = new File(attachment.get(fileName));builder.addBinaryBody(fileName, inputStream, create("multipart/form-data", Consts.UTF_8), file.getName());}for (Map.Entry<String, String> entry : param.entrySet()) {String key = entry.getKey();String value = entry.getValue();StringBody stringBody = new StringBody(value, create("text/plain", Consts.UTF_8));builder.addPart(key, stringBody);logger.info("請求參數:"+key+":"+ value);}HttpEntity reqEntity = builder.build();httpPost.setEntity(reqEntity);// 發起請求 并返回請求的響應response = httpClient.execute(httpPost);// 獲取響應對象HttpEntity resEntity = response.getEntity();if (resEntity != null) {// 打印響應內容rst = EntityUtils.toString(resEntity, Charset.forName("UTF-8")) ;logger.info("*****************response*****************");logger.info("響應結果: " +rst);}// 銷毀EntityUtils.consume(resEntity);return rst;} catch (Exception e) {logger.info("出錯啦: "+e.getMessage());e.printStackTrace();return "出錯了";} finally {try {if (response != null) {response.close();}} catch (IOException e) {e.printStackTrace();}try {if (httpClient != null) {httpClient.close();}} catch (IOException e) {e.printStackTrace();}}}

 調用方法

public String uploadImage () throws Exception {Map<String, String> params = new HashMap<>();params.put("uploadType", "1");params.put("repayReason", "測試數據");Map<String, String> attachment= new HashMap<>();attachment.put("imageFile","picture/repayPic.jpg"); //該附件放在resources包下的picture包里面attachment.put("images","picture/repay.jpg");String rst = baseRequest.upload("http://xxxx.com","/web/upload", attachment, params);return rst; }

  

請求類型表:查看

基本步驟:

1.設置上傳的模式;
  setMode(HttpMultipartMode mode),其中mode主要有BROWSER_COMPATIBLE,RFC6532,STRICT三種,默認值是STRICT。
2.創建MultipartEntityBuilder對象,并添加需要上傳的數據;
 a.利用MultipartEntityBuilder.create()來創建對象;
 b.addBinaryBody:以二進制的形式添加數據,可以添加File、InputStream、byte[]類型的數據。
  addBinaryBody(String name, File file, ContentType contentType, String filename)
  addBinaryBody(String name, InputStream stream, ContentType contentType, String filename)
  addBinaryBody(String name, byte[] b, ContentType contentType, String filename)
 c.addTextBody:添加文本數據
  addTextBody(String name, String text, ContentType contentType)
 d.addPart:以Key/Value的形式添加ContentBody類型的數據
  addPart(String name, ContentBody contentBody)

MultipartEntityBuilder用法

2.MultipartEntityBuilder這個類主要用于創建HttpEntity。它的主要方法有:

修飾符和類型

方法和描述

MultipartEntityBuilder

addBinaryBody(String?name, byte[]?b)?

將字節數組以二進制的形式添加數據。

MultipartEntityBuilder

addBinaryBody(String?name, byte[]?b,?ContentType?contentType,?String?filename)?

將字節數組以二進制的形式添加數據。

MultipartEntityBuilder

addBinaryBody(String?name,?File?file)?

將文件以二進制的形式添加數據。

MultipartEntityBuilder

addBinaryBody(String?name,?File?file,?ContentType?contentType,?String?filename)?

將文件以二進制的形式添加數據。

MultipartEntityBuilder

addBinaryBody(String?name,?InputStream?stream)?

MultipartEntityBuilder

addBinaryBody(String?name,?InputStream?stream,?ContentType?contentType,?String?filename)?

將輸入流以二進制的形式添加數據。

MultipartEntityBuilder

addPart(String?name,?ContentBody?contentBody)?

添加ContentBody?類型的數據。

MultipartEntityBuilder

addTextBody(String?name,?String?text)?

添加文本數據。

MultipartEntityBuilder

addTextBody(String?name,?String?text,?ContentType?contentType)?

以指定的內容類型添加文本數據。

HttpEntity

build()?

創建一個HttpEntity。

static?MultipartEntityBuilder

create()?

創建一個MultipartEntityBuilder對象。

MultipartEntityBuilder

setBoundary(String?boundary)?

設置邊界。

MultipartEntityBuilder

setCharset(Charset?charset)?

設置請求的編碼格式。

MultipartEntityBuilder

setLaxMode()?

MultipartEntityBuilder

setMode(HttpMultipartMode?mode)?

設置模式。

MultipartEntityBuilder

setStrictMode()?

轉載于:https://www.cnblogs.com/unknows/p/11195257.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的httpclient 多附件上传的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。