HttpClient httpClient = HttpClients.createDefault();
HttpPost httppost = new HttpPost(url);
MultipartEntityBuilder mEntityBuilder = MultipartEntityBuilder.create();
//byte[] postBody
mEntityBuilder.addBinaryBody(postName, postBody);
//提交文件
//File file = new File("test");
//mEntityBuilder.addBinaryBody("name", file);
mEntityBuilder.addTextBody("name", "Value");
httppost.setEntity(mEntityBuilder.build());
HttpResponse responce = httpClient.execute(httppost);

不写成接口:可以直接写在一起

HttpEntity reqEntity = MultipartEntityBuilder.create()
.setMode(HttpMultipartMode.BROWSER_COMPATIBLE)
.addPart("multipartFile", bin)
.addPart("userId", userId).setCharset(CharsetUtils.get("UTF-8")).build();

不带参数时:可以直接定义指定的entity

File file = new File("somefile.txt");
FileEntity reqEntity = new FileEntity(file, ContentType.create("text/plain", "UTF-8")); byte[] b;
ByteArrayEntity entity = new ByteArrayEntity(b) ;

下面是我自己定义的接口:

	/**
* Http request :Post
*
* @param url
* @param postBody(Byte)
* @param postName
* @param params
* @param heads
* @param timeOut(Millisecond)
* @return String of request result
*/
public static String postFile(String url, byte[] postBody, String postName, Map params,
Map heads, Integer timeOut) throws HttpErrorException {
String reStr = "";
try {
HttpClient httpClient = HttpClients.createDefault();
HttpPost httppost = new HttpPost(url); MultipartEntityBuilder mEntityBuilder = MultipartEntityBuilder.create();
mEntityBuilder.addBinaryBody(postName, postBody); if (params != null) {
// text params
for (Entry e : params.entrySet()) {
mEntityBuilder.addTextBody(e.getKey(), e.getValue());
}
} httppost.setEntity(mEntityBuilder.build());
if (heads != null) {
// 一般要求プロパティを設定します
for (Entry e : heads.entrySet()) {
httppost.addHeader(e.getKey(), e.getValue());
}
} // set Timeout
RequestConfig requestConfig = RequestConfig.custom().setConnectionRequestTimeout(timeOut)
.setConnectTimeout(timeOut).setSocketTimeout(timeOut).build();
httppost.setConfig(requestConfig);
// get responce
HttpResponse responce = httpClient.execute(httppost);
// get http status code
int resStatu = responce.getStatusLine().getStatusCode(); if (resStatu == HttpStatus.SC_OK) {
// get result data
HttpEntity entity = responce.getEntity();
reStr = EntityUtils.toString(entity);
}
else {
log.error(url + ": resStatu is " + resStatu);
throw new HttpErrorException(url, "resStatu is" + resStatu);
}
}
catch (ConnectionPoolTimeoutException e) {
log.error("http post throw ConnectionPoolTimeoutException", e);
throw new HttpErrorException(url, " throw timeout");
}
catch (ConnectTimeoutException e) {
log.error("http post throw ConnectTimeoutException", e);
throw new HttpErrorException(url, " throw timeout");
}
catch (SocketTimeoutException e) {
log.error("http post throw SocketTimeoutException", e);
throw new HttpErrorException(url, " throw timeout");
}
catch (HttpErrorException e) {
throw e;
}
catch (Exception e) {
log.error("http post throw Exception", e);
throw new HttpErrorException(url, " throw Exception");
}
return reStr;
}

HttpClient Post Form提交文件/二进制数据的更多相关文章

  1. EasyUI Form提交后json数据IE上需要下载(转)

    EasyUI Form提交后json数据IE上需要下载(转)   在使用EasyUI的form中的submit方法时,返回json在IE中变成提示下载的问题,代码如下: $('#fileForm'). ...

  2. easyui form提交文件(上传图片和文件)

    <div id="dialogBtn"> <a class="easyui-linkbutton" href="#" on ...

  3. 利用Formdata实现form提交文件上传不跳转页面

    作者:幻月九十链接:https://www.zhihu.com/question/19631256/answer/119911045来源:知乎著作权归作者所有,转载请联系作者获得授权. $('form ...

  4. BLOB存储图片文件二进制数据是非对错

    子在一天一天虚度,生活也在一天一天中茫然 做人做事哪能尽如人意,付出多少收获多少虽然存在偏颇,但是不劳而获的心态是万万不对的,更不能去怨天尤人,低调为人.做好自己就可以了 改进你的系统的最好的方法是先 ...

  5. asp.net MVC中form提交和控制器接受form提交过来的数据

    1.cshtml页面form提交2.控制器处理表单提交数据4种方式方法1:使用传统的Request请求取值[HttpPost]public ActionResult AddNews(){    str ...

  6. 关于Python获取图片文件二进制数据的问题(获取为空)

    在搭建fastdfs文件系统的时候遇到了点问题,在测试上传文件数据流的时候,需要Python来获取本地文件的二进制流 from fdfs_client.client import Fdfs_clien ...

  7. .net core web api 与httpclient发送和接收文件及数据

    客户端 HttpClient var url = $"https://localhost:44323/api/values/posttest?resource_source=yangwwme ...

  8. js实现无刷新表单提交文件,将ajax请求转换为form请求方法

    最近在做项目的时候遇到一个需要上传文件的需求,因为ajax请求是无法上传二进制文件流的,所以只能用form表单提交,而form提交有一个问题就是会使页面刷新,本文解决了form表单提交文件时页面刷新的 ...

  9. form提交表单中包含time类型数据

    当数据库和实体类中含有date类型的数据时 ,form提交的时间数据只是string类型的,所以不能直接写入到java实体类和数据库,经过百度找到了解决方法 ,特地挪过来: 在controller中增 ...

随机推荐

  1. 百分比布局实现响应式布局在 IE6 中填坑思路

    最近接了个政府项目,政府项目要求响应式,并且兼容IE6,不想用媒体监测的方法,于是用了百分比布局的方法,但是IE6真是名不虚传,做第一个界面就遇到了个bug ①两张宽度各占50%的图片无法在同一横排, ...

  2. 【BZOJ】【3210】花神的浇花集会

    曼哈顿距离与切比雪夫距离 QAQ蒟蒻并不知道切比雪夫距离是什么……并不会做这道题…… 去膜拜了PoPoQQQ大爷的题解: 题目大意:给定平面上的n个点,求一个点到这n个点的切比雪夫距离之和最小 与31 ...

  3. 标准SQL

    1. SQL语句对大小写不敏感! 2. 查询和更新指令构成了 SQL 的 DML 部分: SELECT - 从数据库表中获取数据 UPDATE - 更新数据库表中的数据 DELETE - 从数据库表中 ...

  4. Java compiler level does not match the version of the instal

    一.问题描述 新建了一个项目,workspace默认jdk编译版本是1.7的,新建项目使用的是jdk1.5的版本,肯定会报@override错误.这个时候,修改项目的compilor即可. 这时候,你 ...

  5. Search API 官方文档 可以用了查看自己的app

    Search API October 24, 2012 - HTTPS is now supported for Search and Lookup requests. Please update y ...

  6. centos使用更新更快的yum源

    The Remi Repo is a yum repository maintained by a French dude - Remi Collet. It contains much more u ...

  7. Linux查看日志命令

    tail -f /var/log/apport.log more /var/log/xorg.0.log cat /var/log/mysql.err less /var/log/messages g ...

  8. Tomcat漏洞说明与安全加固

    Tomcat是Apache软件基金会的一个免费的.开放源码的WEB应用服务器,可以运行在Linux和Windows等多个平台上,由于其性能稳定.扩展性好.免费等特点深受广大用户的喜爱.目前,互联网上绝 ...

  9. HDOJ 3486 Interviewe

    人生中第一次写RMQ....一看就知道 RMQ+2分但是题目文不对题....不知道到底在问什么东西....各种WA,TLE,,RE...后就过了果然无论错成什么样都可以过的,就是 上层的样例 啊  I ...

  10. 使用PHP_UML生成代码的UML图

    在读别人代码的时候, 在没有详细文档的时候, 如何快速的看清整个代码的结构(类结构), 就成为了一个现实的问题. 今天我就介绍一种, 自动生成UML图的方法. 假设, 我有一个项目文件夹:laruen ...