java使用httpcomponents 上傳文件


一、httpcomponents簡介

  httpcomponents 是apache下的用來負責創建和維護一個工具集的低水平Java組件集中在HTTP和相關協議的工程。我們可以用它在代碼中直接發送http請求,而無需用到頁面的js去完成。該項目由一下幾個部分組成:

  1、HttpComponents Core:

    HttpCore 是一套的低級別的 HTTP 傳輸組件可用於構建自定義客戶端和服務器端 HTTP 服務與一個最小的足跡。HttpCore 支持兩種模型: 阻止基於經典 Java I/O 和非阻塞 I/O 模型,事件驅動的 I/O 模型基於 Java NIO。阻塞 I/O 模型可能更適合於數據密集型、 低延遲的情況,而非阻塞模型可能更適合高延遲場景尤其是原始數據吞吐量不  有效地同時處理 成千上萬的HTTP連接.而非阻塞模型可能更適合於高延遲情況下 有效地同時處理成千上萬的並發HTTP連接的能力比處理原始數據吞吐量更重要的時候。

  2、HttpComponents Cilent

    HttpClient是一個HTTP/1.1並且兼容HTTP代理的一個實現,基於HttpCore。它為客戶端驗證,HTTP狀態管理,HTTP連接管理,提供哦你一個可重復使用的組件。 HttpComponents Client是Commons HttpClient 3.x的一個替代者和繼承者。

  3、HttpComponents AsyncCore

    HttpClient是一個HTTP/1.1並且兼容HTTP代理的一個實現,基於HttpCore NIO和HttpClient components。它是Apache HttpClient的一個輔助模塊,在處理大量的並發連接的能力比原始數據吞吐量性能更重要的特殊情況下用到。

二、HttpClient post上傳文件

  當我們上傳一個文件的時候,一般都會有個key值對應這個文件。后台可以通過rquest,通過這個key值獲取這個key對於的文件。傳遞參數也是一樣。這里我們用到httpcomponents中的HttpClient組件,下載地址為:http://hc.apache.org/downloads.cgi . 使用到的jar包如下:

 

三、示例代碼

 1 package com.demo.test;
 2 
 3 import java.io.File;
 4 import java.io.IOException;
 5 
 6 import org.apache.http.HttpEntity;
 7 import org.apache.http.client.ClientProtocolException;
 8 import org.apache.http.client.methods.CloseableHttpResponse;
 9 import org.apache.http.client.methods.HttpPost;
10 import org.apache.http.entity.mime.MultipartEntityBuilder;
11 import org.apache.http.entity.mime.content.FileBody;
12 import org.apache.http.impl.client.CloseableHttpClient;
13 import org.apache.http.impl.client.HttpClients;
14 import org.apache.http.util.EntityUtils;
15 
16 public class Test {
17 
18     public static String uploadFile(String uploadurl, File file) {
19         CloseableHttpClient client = HttpClients.createDefault();
20         HttpPost post = new HttpPost(uploadurl);
21         FileBody bin = new FileBody(file);// 文件
22 
23         HttpEntity reqEntity = MultipartEntityBuilder.create()
24                 .addPart("media", bin).build();// 請求體. media為文件對於的key值
25         post.setEntity(reqEntity);
26         String responseContent = null; // 響應內容
27         CloseableHttpResponse response = null;
28         try {
29 
30             response = client.execute(post);
31             if (response.getStatusLine().getStatusCode() == 200) {
32                 HttpEntity entity = response.getEntity();
33                 responseContent = EntityUtils.toString(entity, "UTF-8");
34             }
35         } catch (ClientProtocolException e) {
36             e.printStackTrace();
37         } catch (IOException e) {
38             e.printStackTrace();
39         } finally {
40             try {
41                 if (response != null)
42                     response.close();
43 
44             } catch (IOException e) {
45                 e.printStackTrace();
46             } finally {
47                 try {
48                     if (client != null)
49                         client.close();
50                 } catch (IOException e) {
51                     e.printStackTrace();
52                 }
53             }
54         }
55         return responseContent;
56     }
57 
58     public static void main(String[] args) {
59         String result = uploadFile("http://www.xxx.com/file/upload.action", new File(
60                 "c:/test.txt"));
61         System.out.println(result);
62     }
63 
64 }

  后台打印信息,會顯示文件上傳的結果。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM