一、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包如下:

三、示例代码

 package com.demo.test;

 import java.io.File;
import java.io.IOException; import org.apache.http.HttpEntity;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils; public class Test { public static String uploadFile(String uploadurl, File file) {
CloseableHttpClient client = HttpClients.createDefault();
HttpPost post = new HttpPost(uploadurl);
FileBody bin = new FileBody(file);// 文件 HttpEntity reqEntity = MultipartEntityBuilder.create()
.addPart("media", bin).build();// 请求体. media为文件对于的key值
post.setEntity(reqEntity);
String responseContent = null; // 响应内容
CloseableHttpResponse response = null;
try { response = client.execute(post);
if (response.getStatusLine().getStatusCode() == 200) {
HttpEntity entity = response.getEntity();
responseContent = EntityUtils.toString(entity, "UTF-8");
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (response != null)
response.close(); } catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (client != null)
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return responseContent;
} public static void main(String[] args) {
String result = uploadFile("http://www.xxx.com/file/upload.action", new File(
"c:/test.txt"));
System.out.println(result);
} }

  后台打印信息,会显示文件上传的结果。 

java使用httpcomponents 上传文件的更多相关文章

  1. 《手把手教你》系列技巧篇(五十四)-java+ selenium自动化测试-上传文件-中篇(详细教程)

    1.简介 在实际工作中,我们进行web自动化的时候,文件上传是很常见的操作,例如上传用户头像,上传身份证信息等.所以宏哥打算按上传文件的分类对其进行一下讲解和分享. 2.为什么selenium没有提供 ...

  2. 《手把手教你》系列技巧篇(五十五)-java+ selenium自动化测试-上传文件-下篇(详细教程)

    1.简介 在实际工作中,我们进行web自动化的时候,文件上传是很常见的操作,例如上传用户头像,上传身份证信息等.所以宏哥打算按上传文件的分类对其进行一下讲解和分享. 2.为什么selenium没有提供 ...

  3. Java使用HttpClient上传文件

    Java可以使用HttpClient发送Http请求.上传文件等,非常的方便 Maven <dependency> <groupId>org.apache.httpcompon ...

  4. java使用ftp上传文件

    ftpServer是apache MINA项目的一个子项目,它实现了一个ftp服务器,与vsftpd是同类产品.Filezilla是一个可视化的ftp服务器. ftp客户端也有很多,如Filezill ...

  5. Java Servlet 接收上传文件

    在Java中使用 Servlet 来接收用户上传的文件,需要用到两个apache包,分别是 commons-fileupload 和 commons-io 包: 如果直接在doPost中,使用requ ...

  6. Java使用HttpURLConnection上传文件

    从普通Web页面上传文件非常easy.仅仅须要在form标签叫上enctype="multipart/form-data"就可以,剩余工作便都交给浏览器去完毕数据收集并发送Http ...

  7. Java模拟http上传文件请求(HttpURLConnection,HttpClient4.4,RestTemplate)

    先上代码: public void uploadToUrl(String fileId, String fileSetId, String formUrl) throws Throwable { St ...

  8. JAVA调用FTP上传文件

    import java.io.File; import java.io.FileInputStream; import org.apache.commons.net.ftp.FTP; import o ...

  9. java 网页 保存上传文件

    网页请求提交到另外一个jsp 进行处理 index.jsp <%@ page language="java" import="java.util.*" p ...

随机推荐

  1. C#函数式程序设计之局部套用与部分应用

    函数式设计的核心与函数的应用以及函数如何作为算法的基本模块有关.利用局部套用技术可以把所有函数看成是函数类的成员,这些函数只有一个形参,有了局部套用,才有部分应用.部分应用是使函数模块化成为可能的两个 ...

  2. AEAI EM费用管理系统V1.0.2版本开源发布

    本次开源发布是AEAI EM费用管理系统 V1.0.2版,该版本是此产品的首个版本,产品现已开源并上传至开源社区http://www.oschina.net/p/aeai-em. 产品说明: AEAI ...

  3. 重新想象 Windows 8.1 Store Apps (80) - 控件增强: WebView 之基本应用, POST 数据, 与 JavaScript 交互

    [源码下载] 重新想象 Windows 8.1 Store Apps (80) - 控件增强: WebView 之基本应用, POST 数据, 与 JavaScript 交互 作者:webabcd 介 ...

  4. File文件的Api的各种方法

    package com.immoc; import java.io.File; import java.io.IOException; public class Fileto { public sta ...

  5. 【iOS】Quartz2D基本图形

    一.画线段 - (void)drawRect:(CGRect)rect { // Drawing code // 1.获得图形上下文 CGContextRef ctx = UIGraphicsGetC ...

  6. android: DOC命令:查看后台运行的activity:

    DOC命令:查看后台运行的activity: adb shell dumpsys activity running activity: 模拟器曾经运行过的 activity:

  7. MapGIS转Shp文件的单位问题

    在MapGIS浏览查看一下数据,各种不习惯:用mapgis自带的转shp功能,属性表会出错:利用名为map2shp的试用版软件可将mapgis格式的数据较为良好转成shp格式.但经常会遇到一个单位问题 ...

  8. CRM Look Up 解决方案

    CRM 前瑞开发中关于lookup的开发工作肯定会遇到,例如选中一个客户或者联系人后自动把相关的信息映射到相关记录上,这样可以减少用户的输入工作.我们在CRM 的映射关系中可以配置相关字段的映射可以解 ...

  9. 自定义SharePoint 2013 元数据选择控件

    元数据在Sharepoint中是一个很常用的功能,他提供一个方法来管理企业中常用的关键词,可以更加统一的使用和更新.默认情况下,绑定在列表或库中的元数据字段可以设置是否允许为多个值.但是无法控制在弹出 ...

  10. 对于Oracle analyze table的使用总结 . 对于Oracle analyze table的使用总结 .

    对于Oracle analyze table的使用总结 . 对于Oracle analyze table的使用总结 . analyze table 一般可以指定分析: 表,所有字段,所有索引字段,所有 ...