使用 HttpClient 4 進行檔案上傳

2021-07-10 18:05:47 字數 4155 閱讀 9001

1. 概述

本教程我們將描述如何使用httpclient 4進行一次多檔案上傳操作.

我們將使用 作為測試伺服器,因為它是面向公眾的,並且接受大多數型別的內容.

如果你想要深入學習並了解你可以使用 httpclient 做到的其它很棒的事情 – 那就去看看首要的 httpclient 教程吧 .

2. 使用 addpart 方法

讓我們開始研究研究 multipartentitybuilder 物件,來向乙個http實體新增成分,它在稍後將會被通過乙個post操作上傳.

這是向乙個httpentity新增成分來表示表單的一般方法.

示例 2.1. - 使用兩個文字成分和乙個檔案上傳乙個表單

請注意我們也通過制定將會被伺服器使用到的contenttype值來例項化file物件.

同樣還請注意 addpart 方法有兩個引數,作用就像是表單的鍵值對 . 除非伺服器端實際需要這些值並使用了這些引數名稱,它們就是有干係的,否則它們就會被簡單的忽略掉.

leoxu

leoxu

翻譯於 1年前

0人頂頂 翻譯的不錯哦!

3. 使用 addbinarybody 和 addtextbody 方法

建立乙個multipart實體更直接的方式就是使用 addbinarybody 和 addtextbody  方法. 這些方法服務於上傳文字,檔案,字元陣列和 inputstream 物件. 我們用了乙個簡單的例子來描述如何使用它們 .

示例 3.1. - 上傳乙個文字和乙個文字檔案部分

注意這裡不需要 filebody 和 stringbody 物件

同樣重要的是,大多數伺服器不會檢查文字體的 contenttype , 因此 addtextbody 方法可能會忽略掉 contenttype 值 .

addbinarybody 的 api 接受乙個 contenttype - 但是它也有可能從乙個二進位制體來建立實體,而對應名稱的表單引數持有了這個檔案. 如前面小節所述,如果contenttype值沒有被指定,一些伺服器將不會識別這個檔案.

leoxu

leoxu

翻譯於 1年前

0人頂頂 翻譯的不錯哦!

接下來,我們將乙個zip檔案作為乙個 inputstream 新增進來, 而檔案將會被作為file物件被新增進來:

示例 3.2. - 上傳乙個zip檔案,乙個檔案和乙個文字塊

請注意contenttype值可以被動態建立,正如上面這個針對zip檔案的示例中所示 .

最後,不是所有的伺服器都接受 inputstream 部分. 我們在**的第一行實體化的伺服器可以接受 .

讓我們現在來看看另外乙個示例, addbinarybody直接用於乙個位陣列 :

示例 3.3. - 上傳乙個位陣列和文字

留意contenttype - 它現在被指定為二進位制資料.

4. 總結

本文呈現了 multipartentitybuilder 作為乙個靈活的物件提供了建立乙個 multipart 表單多種api.

示例同樣也展示了如何使用httpclient上傳乙個類似於表單實體的httpentity .

這些示例的所有實現和**塊在 我的github專案 中可以找到 – 這是乙個基於eclipse的專案, 因此可以很容易的匯入並執行.

使用 HttpClient 4 進行檔案上傳

1.概述 本教程我們將描述如何使用httpclient 4進行一次多檔案上傳操作.我們將使用 作為測試伺服器,因為它是面向公眾的,並且接受大多數型別的內容.如果你想要深入學習並了解你可以使用 httpclient 做到的其它很棒的事情 那就去看看首要的 httpclient 教程吧 2.使用 add...

使用HttpClient4實現API測試實戰(1)

size x large b 0 特別說明 b size 2 測試api的多附件上傳,請查閱 url 使用httpclient4實現api測試實戰 2 多附件上傳 url size x large b 1 引言 b size 由於專案開發需要實現已有的api介面的測試,但api介面使用了token驗...

HttpClient 4 訪問遠端服務

1.帶ssl證書 獲取sslsocketfactory物件 sslsocketfactory ssf sslcontext.getsocketfactory 建立httpsurlconnection物件,並設定其sslsocketfactory物件 設定連線引數 conn.setdoinput tr...