多附件上传实例:

 /*** 多附件上传* @param host* @param uri* @param attachment 附件* @param param  body参数* @return*/public String upload(String host, String uri, Map<String,String> attachment, Map<String, String> param) {logger.info("*****************request*****************");CloseableHttpClient httpClient = null;CloseableHttpResponse response = null;MultipartEntityBuilder builder = MultipartEntityBuilder.create();;File file = null;InputStream inputStream = null;String url = host + uri;String rst = "";try {httpClient = HttpClients.createDefault();logger.info("请求路径: "+ url);HttpPost httpPost = new HttpPost(url);for(String fileName:attachment.keySet()){inputStream = this.getClass().getClassLoader().getResourceAsStream(attachment.get(fileName));  //获取resources下的资源文件file = new File(attachment.get(fileName));builder.addBinaryBody(fileName, inputStream, create("multipart/form-data", Consts.UTF_8), file.getName());}for (Map.Entry<String, String> entry : param.entrySet()) {String key = entry.getKey();String value = entry.getValue();StringBody stringBody = new StringBody(value, create("text/plain", Consts.UTF_8));builder.addPart(key, stringBody);logger.info("请求参数:"+key+":"+ value);}HttpEntity reqEntity = builder.build();httpPost.setEntity(reqEntity);// 发起请求 并返回请求的响应response = httpClient.execute(httpPost);// 获取响应对象HttpEntity resEntity = response.getEntity();if (resEntity != null) {// 打印响应内容rst = EntityUtils.toString(resEntity, Charset.forName("UTF-8")) ;logger.info("*****************response*****************");logger.info("响应结果: " +rst);}// 销毁EntityUtils.consume(resEntity);return rst;} catch (Exception e) {logger.info("出错啦: "+e.getMessage());e.printStackTrace();return "出错了";} finally {try {if (response != null) {response.close();}} catch (IOException e) {e.printStackTrace();}try {if (httpClient != null) {httpClient.close();}} catch (IOException e) {e.printStackTrace();}}}

 调用方法

public String uploadImage () throws Exception {Map<String, String> params = new HashMap<>();params.put("uploadType", "1");params.put("repayReason", "测试数据");Map<String, String> attachment= new HashMap<>();attachment.put("imageFile","picture/repayPic.jpg");  //该附件放在resources包下的picture包里面attachment.put("images","picture/repay.jpg");String rst = baseRequest.upload("http://xxxx.com","/web/upload", attachment, params);return rst;
}

  

请求类型表:查看

基本步骤:

1.设置上传的模式;
  setMode(HttpMultipartMode mode),其中mode主要有BROWSER_COMPATIBLE,RFC6532,STRICT三种,默认值是STRICT。
2.创建MultipartEntityBuilder对象,并添加需要上传的数据;
 a.利用MultipartEntityBuilder.create()来创建对象;
 b.addBinaryBody:以二进制的形式添加数据,可以添加File、InputStream、byte[]类型的数据。
  addBinaryBody(String name, File file, ContentType contentType, String filename)
  addBinaryBody(String name, InputStream stream, ContentType contentType, String filename)
  addBinaryBody(String name, byte[] b, ContentType contentType, String filename)
 c.addTextBody:添加文本数据
  addTextBody(String name, String text, ContentType contentType)
 d.addPart:以Key/Value的形式添加ContentBody类型的数据
  addPart(String name, ContentBody contentBody)

MultipartEntityBuilder用法

2.MultipartEntityBuilder这个类主要用于创建HttpEntity。它的主要方法有:

修饰符和类型

方法和描述

MultipartEntityBuilder

addBinaryBody(String name, byte[] b)

将字节数组以二进制的形式添加数据。

MultipartEntityBuilder

addBinaryBody(String name, byte[] b, ContentType contentType, String filename)

将字节数组以二进制的形式添加数据。

MultipartEntityBuilder

addBinaryBody(String name, File file)

将文件以二进制的形式添加数据。

MultipartEntityBuilder

addBinaryBody(String name, File file, ContentType contentType, String filename)

将文件以二进制的形式添加数据。

MultipartEntityBuilder

addBinaryBody(String name, InputStream stream)

MultipartEntityBuilder

addBinaryBody(String name, InputStream stream, ContentType contentType, String filename)

将输入流以二进制的形式添加数据。

MultipartEntityBuilder

addPart(String name, ContentBody contentBody)

添加ContentBody 类型的数据。

MultipartEntityBuilder

addTextBody(String name, String text)

添加文本数据。

MultipartEntityBuilder

addTextBody(String name, String text, ContentType contentType)

以指定的内容类型添加文本数据。

HttpEntity

build()

创建一个HttpEntity。

static MultipartEntityBuilder

create()

创建一个MultipartEntityBuilder对象。

MultipartEntityBuilder

setBoundary(String boundary)

设置边界。

MultipartEntityBuilder

setCharset(Charset charset)

设置请求的编码格式。

MultipartEntityBuilder

setLaxMode()

MultipartEntityBuilder

setMode(HttpMultipartMode mode)

设置模式。

MultipartEntityBuilder

setStrictMode()

转载于:https://www.cnblogs.com/unknows/p/11195257.html

httpclient 多附件上传相关推荐

  1. discuz 删除系统自带的附件上传

    由于使用了DBank的论坛附件程序,所以想去掉系统自带的附件上传程序,后台不能设置,研究了下,找到一下方法: 1.  template\default\forum\editor_menu_forum. ...

  2. java多附件上传 实例demo

    java多附件上传 实例demo <%@ page language="java" import="java.util.*" pageEncoding=& ...

  3. 使用DOM方法实现多附件上传客户端

    有时候需要传多个附件,再次我用javascript的dom方式实现了次功能,很实用的. 功能呢就是用户可以添加多个附件,每次点击 添加 添加一个新的上传文本域,对于已经添加的上传文本域,用户可以 点击 ...

  4. soapui 证书_SoapUI入门之附件上传和配置Https请求

    已经欠了一堆的作业了,吼吼~ 拖延症是个大bug,废话不多说,马上进入咱们SoapUI的学习中来吧~ 现在开始我们的SoapUI集成测试学习之道: 一.如何使用SoapUI进行附件上传 做人还是不能这 ...

  5. python autoit获取网页ajax数据_WebDriver + Python 调用AutoIt例子(实现139邮箱写信页的附件上传)...

    PS: 前提 1. 安装好webdriver下python实现的环境 2. 安装好Autoit(默认安装就可以了) 3. 另外需要一个139邮箱账号,脚本运行时上传的图片在附件里面 #coding:c ...

  6. ant react 上传_React实战之Ant Design—Upload上传_附件上传

    React实战之Ant Design-Upload上传_附件上传 Upload组件大家都在官方文档中看过了,但写的时候还是会遇到许多问题,一些新手看了文档后感觉无从下手,本文过多的简绍就不说了,直接看 ...

  7. httpclient base64 文件上传_代码级别的上传下载神器

    前言 不知道大家在工作中有没有碰到过在代码级别中进行上传和下载呢,一般的场景为调用第三方的接口进行上传大文件和下载大文件. 我一个小伙伴最近在工作中就碰到了,他需要在代码中调用第三方http接口进行原 ...

  8. (转)基于MVC4+EasyUI的Web开发框架形成之旅--附件上传组件uploadify的使用

    http://www.cnblogs.com/wuhuacong/p/3343967.html 大概一年前,我还在用Asp.NET开发一些行业管理系统的时候,就曾经使用这个组件作为文件的上传操作,在随 ...

  9. Airtable无法上传附件/图片;点击附件上传没反应;不安全的地址怎么设置为受信任;解决方法亲测有效

    问题描述 在使用Airtable的时候突然遇到 附件上传不了的情况,就是 或者是 检查的时候刷新页面,点击附件上传反复出现下面这些信息: DevTools 无法加载来源映射:无法加载 net::ERR ...

最新文章

  1. [转]总结使用Unity 3D优化游戏运行性能的经验
  2. 分页的limit_Presto分页功能概述
  3. 漫画算法python版下载_用 Python 下载漫画
  4. 使用Perl5获取有道词典释义
  5. 首席建筑师之光线追踪教程
  6. 批处理for循环逐一处理目录中的文件
  7. 刷题42-m升水倒入n个杯子(动态规划)
  8. 多张图片合成一个tif文件
  9. 通过python实现同步修改本地电脑时间
  10. XGBoost 与 信用卡诈骗数据集 三
  11. c语言编译器中输出虚线,请教:c语言中用什么命令画虚线
  12. 软件语音验证码webservice_明明发送了却迟迟收不到短信验证码?
  13. 02-JVM堆里面的分区:Eden,survival (from+ to),老年代,各自的特点?
  14. 2021年电工(技师)最新解析及电工(技师)复审考试
  15. 攻略-联想 Yoga 900 安装 Arch Linux 系统
  16. tensorflow 做多元线性回归时怎样对非数据型数据(分类型数据)进行处理(编码)
  17. 可恶啊,被他用责任链给装到了
  18. idea配置maven报错:org.codehaus.plexus.component.repository.exception.ComponentLookupException
  19. 陆军工程大学毕业论文Latex模板
  20. 【转贴】揭密SQL Server DATETIME数据类型

热门文章

  1. VSCode从下载到配置Ubuntu系统
  2. mysql中视图的概念_MySql中的视图的概念及应用
  3. ADC实验(读取引脚电压值)
  4. sql 写query_为什么需要动态SQL
  5. 通过远程(vnc)无法打开qtcreator
  6. python udp 大文件_Python:通过UDP发送大对象
  7. mysql函数lead用指定的字符串实现左填充指定长度
  8. 收集Redis16个最常见面试问题
  9. 【收集】常用的cmd命令
  10. java 判断域密码到期提醒,Exchange Server 2010下,检测用户密码到期通知提醒脚本...