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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277204.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277204.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277204.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

加拿大大學 計算機專業排名2015,加拿大大學計算機專業排名top15

加拿大大學計算機專業排名。加拿大開設計算機專業的很多高校還提供帶薪實習機會&#xff0c;吸引了眾多國際學子前往留學。在加拿大計算機專業優秀的大學很多。同時&#xff0c;加拿大計算機專業排名在世界上也非常的靠前&#xff0c;在加拿大有很多大學值得廣大計算機熱愛者選…

如何讀懂并寫出裝逼的函數式代碼

今天在微博上看到了 有人分享了下面的這段函數式代碼&#xff0c;我把代碼貼到下面&#xff0c;不過我對原來的代碼略有改動&#xff0c;對于函數式的版本&#xff0c;咋一看&#xff0c;的確令人非常費解&#xff0c;仔細看一下&#xff0c;你可能就暈掉了&#xff0c;似乎完全…

如何打通高薪的黃金通道 成為職場金領

身在職場的你&#xff0c;是否想過有朝一日能獲得百萬年薪&#xff1f;最近&#xff0c;央視二套絕對挑戰特別節目巔峰營銷的熱播&#xff0c;引發各方人士對東風日產百萬年薪招兵營銷總監的關注。身價百萬的營銷總監人人想當&#xff0c;如何才能成為這樣的職場金領&#xff0…

iView 實戰系列教程(21課時)_2.iView 實戰教程之導航、路由、鑒權篇

在c盤創建一個iview-router的項目、然后使用默認的配置跳過添加vue-router的插件編譯我們的文件。編譯好之后&#xff0c;我們啟動App默認的頁面就打開了。默認兩個路由一個是about界面一個是home我們使用編輯器打開代碼&#xff0c;用我們的iview的menu組件替換掉這兩個路由在…

計算機專業單元測試卷答案,銀保監會考試題庫:計算機類模擬試題練習(六)答案...

2020銀保監會招聘考試即將開始。根據往年經驗&#xff0c;銀保監會招聘考試科目包括行測、申論和專業科目共三科&#xff0c;專業科目是考試提分的關鍵&#xff0c;那么如何才能提升專業科目的做題速度并快速提分呢&#xff1f;別擔心&#xff0c;中公金融人小編根據歷年的考試…

Ubuntu安裝Nginx

在Ubuntu下安裝Nginx有以下方法&#xff0c;但是如果想要安裝最新版本的就必須下載源碼包編譯安裝。 一、基于APT源安裝 sudo apt-get install nginx 安裝好的文件位置&#xff1a; /usr/sbin/nginx&#xff1a;主程序 /etc/nginx&#xff1a;存放配置文件 /usr/share/nginx&am…

9.28PMP每日一題

控制質量過程的輸出是&#xff1a;A、變更請求B、批準的變更請求C、工作績效數據D、事業環境因素 答案將于明天和新題一起發布&#xff01;9.27試題答案&#xff1a;C轉載于:https://blog.51cto.com/13554215/2287292

將數組綁定到dropdownlist上

<% Page Language"C#" %><% Import Namespace"System.Data" %><Script Language"C#" Runat"Server">public void Page_Load(Object src,EventArgs e){ //首先建立一個數組 ArrayList arrnew ArrayList(); …

HTML標題h,HTML H標題標簽

可以將HTML標題或HTML h標簽定義為要在網頁上顯示的標題或副標題。當你將文本放在標題標簽……… h1>內時, 它在瀏覽器中以粗體顯示, 并且文本的大小取決于標題的數量。從到標簽定義了六個不同的HTML標題, 從最高級別h1(主標題)到最低級別h6(最重要的標題)。h1是最大的標題標…

湯姆大叔的6道javascript編程題題解

1、找出數字數組中最大的元素&#xff08;使用Math.max函數&#xff09; 123var a [1, 2, 3, 6, 5, 4];var ans Math.max.apply(null, a);console.log(ans); // 6這題很巧妙地用了apply&#xff0c;如果不是數組&#xff0c;是很多數字求最大值&#xff0c;我們知道可以這樣…

Android 多線程之幾個基本問題

Android中的進程和線程 Android中的一個應用程序一般就對應著一個進程&#xff0c;多進程的情況可以參考Android 多進程通信之幾個基本問題 Android中更常見的是多線程的情況&#xff0c;一個應用程序中一般都有包括UI線程等多個線程。Android中規定網絡訪問必須在子線程中進行…

Web下的整體測試

隨著Internet的日益普及&#xff0c;現在基于B/S結構的大型應用越來越多&#xff0c;可如何對這些應用進行測試成為日益迫切的問題。有許多測試人員來信問我B/S的測試如何做&#xff0c;由于工作較繁忙&#xff0c;對大家提出的問題也是頭痛醫頭腳痛醫腳&#xff0c;沒有對WEB的…

用計算機算算術平方根順序是ON然后是什么,第2課時用計算器求一個正數的算術平方根.ppt...

1.比較下列各組數的大小&#xff1a;(1) 與(2) 與 8依次按鍵顯示&#xff1a;1.732 050 808例3 小麗想用一塊面積為400 cm2的正方形紙片&#xff0c;沿著邊的方向剪出一塊面積為300 cm2的長方形紙片&#xff0c;使它的長寬之比為3:2&#xff0e;她不知能否裁得出來&#xff0c;…

MySQL 命令

版權聲明&#xff1a;本文首發 http://asing1elife.com &#xff0c;轉載請注明出處。 https://blog.csdn.net/asing1elife/article/details/82892834 MySQL 一些常見命令 更多精彩 更多技術博客&#xff0c;請移步 asing1elife’s blog 查看版本號 mysql -V重啟/啟動/停止 mys…

Bookshelf 2 簡單DFS

鏈接&#xff1a;https://ac.nowcoder.com/acm/contest/993/C來源&#xff1a;牛客網 題目描述 Farmer John recently bought another bookshelf for the cow library, but the shelf is getting filled up quite quickly, and now the only available space is at the top.FJ…

一步一步SharePoint 2007之五:向網站中添加一個子網站

一步一步SharePoint 2007之五&#xff1a;向網站中添加一個子網站摘要感受完看到成果的激動&#xff0c;感受完鄰家女孩的漂亮、可愛和端莊&#xff0c;不要停止&#xff0c;來&#xff0c;讓我們一起來動手打造心目中的完美女神吧&#xff01;本篇文章將介紹如何向一個網站中添…

微型計算機系統分為哪幾個層次,計算機系統分為哪4層?

滿意答案al053192014.06.23采納率&#xff1a;49% 等級&#xff1a;12已幫助&#xff1a;7516人第一層&#xff1a;物理層(PhysicalLayer)&#xff0c;規定通信設備的機械的、電氣的、功能的和過程的特性&#xff0c;用以建立、維護和拆除物理鏈路連接。具體地講&#xff0c…

ASP.NET Core 基礎教程 - ASP.NET Core 基礎教程 - 簡單教程,簡單編程

原文:ASP.NET Core 基礎教程 - ASP.NET Core 基礎教程 - 簡單教程&#xff0c;簡單編程 ASP.NET Core 是對 ASP.NET 有重大意義的一次重新設計。本章節我們將介紹 ASP.NET Core 中的一些新的概念和它們是如何幫助我們開發現代化的 Web 應用程序 盡管 ASP.NET Core 是跨平臺的&a…

參數初始化

通過以下形式進行參數初始化 self.fc nn.Linear(n_head * d_v, d_model) nn.init.xavier_normal_(self.fc.weight) 轉載于:https://www.cnblogs.com/yeran/p/11197047.html

使用input type=file 上傳文件時需注意

在asp.net的中使用<input typefile />控件上傳文件對文件的大小有限制,默認情況下大概在4m左右,如果上傳再大的文件時就會出頁面無法顯示的錯誤.修改web.config文件中的參數可以設置該控件上傳文件的大小,web.config中配置如下:在<system.web>節點下增加"<…