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包如下:
三、示例代码
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 上传文件的更多相关文章
- 《手把手教你》系列技巧篇(五十四)-java+ selenium自动化测试-上传文件-中篇(详细教程)
1.简介 在实际工作中,我们进行web自动化的时候,文件上传是很常见的操作,例如上传用户头像,上传身份证信息等.所以宏哥打算按上传文件的分类对其进行一下讲解和分享. 2.为什么selenium没有提供 ...
- 《手把手教你》系列技巧篇(五十五)-java+ selenium自动化测试-上传文件-下篇(详细教程)
1.简介 在实际工作中,我们进行web自动化的时候,文件上传是很常见的操作,例如上传用户头像,上传身份证信息等.所以宏哥打算按上传文件的分类对其进行一下讲解和分享. 2.为什么selenium没有提供 ...
- Java使用HttpClient上传文件
Java可以使用HttpClient发送Http请求.上传文件等,非常的方便 Maven <dependency> <groupId>org.apache.httpcompon ...
- java使用ftp上传文件
ftpServer是apache MINA项目的一个子项目,它实现了一个ftp服务器,与vsftpd是同类产品.Filezilla是一个可视化的ftp服务器. ftp客户端也有很多,如Filezill ...
- Java Servlet 接收上传文件
在Java中使用 Servlet 来接收用户上传的文件,需要用到两个apache包,分别是 commons-fileupload 和 commons-io 包: 如果直接在doPost中,使用requ ...
- Java使用HttpURLConnection上传文件
从普通Web页面上传文件非常easy.仅仅须要在form标签叫上enctype="multipart/form-data"就可以,剩余工作便都交给浏览器去完毕数据收集并发送Http ...
- Java模拟http上传文件请求(HttpURLConnection,HttpClient4.4,RestTemplate)
先上代码: public void uploadToUrl(String fileId, String fileSetId, String formUrl) throws Throwable { St ...
- JAVA调用FTP上传文件
import java.io.File; import java.io.FileInputStream; import org.apache.commons.net.ftp.FTP; import o ...
- java 网页 保存上传文件
网页请求提交到另外一个jsp 进行处理 index.jsp <%@ page language="java" import="java.util.*" p ...
随机推荐
- Linux下修改PATH路径
1.#PATH=$PATH:/opt/lamp/mysql/bin 使用这种方法,只对当前会话有效,也就是说每当登出或注销系统以后,PATH 设置就会失效 2.#vi /etc/profi ...
- spring日记------部署环境、写demo
一.安装jdk1.7 祥见http://zhinan.sogou.com/guide/detail/?id=1610006590 二.创建web项目 略 三.配置ssm环境 3.1添加spring.m ...
- 【原创】有关Silverlight控件DataGrid的绑定数据后单元格单独复制的功能实现分析
前些日子,公司新需求需要对silverlight的datagrid进行局部任意单元格数据可复制,查阅了半天网络资料愣是没找到相关资料,开始还以为是silverlight的bug根部无法实现, 最后还是 ...
- 在node.js中使用COOKIE
node.js中如何向客户端发送COOKIE呢?有如下两个方案: 一.使用response.writeHead,代码示例: //设置过期时间为一分钟 var today = new Date(); v ...
- sphinx配置文件sphinx.conf参数详细说明
sphinx配置文件sphinx.conf参数详细说明 sphinx.conf各个参数详细说明 # # Sphinx configuration file sample # # WARNING! Wh ...
- ExtJS4图片验证码的实现
ExtJS4学习笔记(十)---ExtJS4图片验证码的实现 转自:http://blog.sina.com.cn/s/blog_8d4bbd890100xaxh.html 上多少篇文章,重要 ...
- 重新想象 Windows 8.1 Store Apps (82) - 绑定: DataContextChanged, TargetNullValue, FallbackValue, UpdateSourceTrigger
[源码下载] 重新想象 Windows 8.1 Store Apps (82) - 绑定: DataContextChanged, TargetNullValue, FallbackValue, Up ...
- HTML5 Viewport Meta Tag
https://developer.apple.com/library/ios/documentation/AppleApplications/Reference/SafariWebContent/U ...
- Titanium开发环境搭建第一个坑
操作系统: Ubuntu 12.04 LTS AMD64 在Titanium Studio中,装Titanium CLI怎么都不能成功,到了一个进度,发现卡在那里,硬盘一直狂闪,发现在Studio的文 ...
- 回文串---吉哥系列故事——完美队形II
HDU 4513 Problem Description 吉哥又想出了一个新的完美队形游戏! 假设有n个人按顺序站在他的面前,他们的身高分别是h[1], h[2] ... h[n],吉哥希望从中挑出 ...