现有业务场景需要使用RestTemplate发送一个post请求,请求格式为multipart/form-data的,可以使用以下方法:

public Object sendRequest(Object obj) {
RestTemplate restTemplate = new RestTemplate(); //设置请求头(注意会产生中文乱码)
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA); HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<MultiValueMap<String, String>>(
popHeaders(obj), headers);
//发送请求,设置请求返回数据格式为String
ResponseEntity<String> responseEntity = restTemplate.postForEntity("http:xxx.xx", request, String.class); }
//组装请求体
protected MultiValueMap<String, String> popHeaders(Object obj) {
SubmitOrderDTO submit = (SubmitOrderDTO) obj;
MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>(); map.add("order_id", submit.getOrderId());
map.add("userName",submit.getUserName());
//.....
return map;
}

PS:对于上面的代码进行操作之后发现如果相应的参数中包含中文就会出现乱码,所以做了一下修改:

public Object sendRequest(Object obj) {
RestTemplate restTemplate = new RestTemplate(); //对中文格式数据进行处理
FormHttpMessageConverter fc = new FormHttpMessageConverter();
StringHttpMessageConverter stringConverter = new StringHttpMessageConverter(StandardCharsets.UTF_8);
List<HttpMessageConverter<?>> partConverters = new ArrayList<HttpMessageConverter<?>>();
partConverters.add(stringConverter);
partConverters.add(new ResourceHttpMessageConverter());
fc.setPartConverters(partConverters);
restTemplate.getMessageConverters().addAll(Arrays.asList(fc,new MappingJackson2HttpMessageConverter())); //发送请求,设置请求返回数据格式为String(去除上面方法中使用的httpEntity)
ResponseEntity<String> responseEntity = restTemplate.postForEntity("http:xxx.xx", popHeaders(obj), String.class); }
//组装请求体
protected MultiValueMap<String, String> popHeaders(Object obj) {
SubmitOrderDTO submit = (SubmitOrderDTO) obj;
MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>(); map.add("order_id", submit.getOrderId());
map.add("userName",submit.getUserName());
//.....
return map;
}

使用RestTemplate发送multipart/form-data格式的数据的更多相关文章

  1. VUE axios 发送 Form Data 格式数据请求

    axios 默认是 Payload 格式数据请求,但有时候后端接收参数要求必须是 Form Data 格式的,所以我们就得进行转换.Payload 和 Form Data 的主要设置是根据请求头的 C ...

  2. axios请求提交的form data格式 明明是JSON格式的参数却转成了字符串格式

    问题:传的参数成为了字符数格式 解决:把参数的格式转换 const params = new URLSearchParams() params.append('USER_LOGIN', 'admin' ...

  3. 发送xml或json格式的数据给服务器

    后台通过context.Request.InputStream来接收 #region 发送消息 + void SendMessage() /// <summary> /// 发送消息 // ...

  4. html5 file upload and form data by ajax

    html5 file upload and form data by ajax 最近接了一个小活,在短时间内实现一个活动报名页面,其中遇到了文件上传. 我预期的效果是一次ajax post请求,然后在 ...

  5. RestTemplate 发送post请求

    springboot使用restTemplate post提交值 restTemplate post值 post提交有 FormData和Payload 两种形式: 第一种是formdata形式,在h ...

  6. Sending forms through JavaScript[form提交 form data]

    https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/Sending_forms_through_JavaScript As in the ...

  7. RestTemplate发送请求并携带header信息 RestTemplate post json格式带header信息

    原文地址:  http://www.cnblogs.com/hujunzheng/p/6018505.html RestTemplate发送请求并携带header信息   v1.使用restTempl ...

  8. fetch发送Form Data请求并携带cookie

    今天我们来说说如何fetch发送Form Data请求并携带cookie,直接进入正题好吧,别问我今天为啥不在开始吹两句了,累到一句牛逼不想吹...... 步骤1: 设置头部,"Conten ...

  9. springMVC中对HTTP请求form data和request payload两种数据发送块的后台接收方式

    最近在做项目中发现,前台提交数据时,如果通过form表单提交和ajax发送json时,springMVC后台接收不能都通过@ModelAttribute方式处理,经过一番查找后,ajax发送json请 ...

随机推荐

  1. HDU2491 Priest John&#39;s Busiest Day

    题目链接 题意: 有n个人要进行乒乓球比赛,每一个人都一个能力值.每一个人出现的次序就是他们住的位置 如今要求进行一场比赛,三个人,裁判的能力值在两个选手之间,住的位置也在两个人的之间 问这样的比赛一 ...

  2. Dubbo超时重试机制带来的数据重复问题

    Dubbo的超时重试机制为服务容错.服务稳定提供了比较好的框架支持,但是在一些比较特殊的网络环境下(网络传输慢,并发多)可能 由于服务响应慢,Dubbo自身的超时重试机制(服务端的处理时间超过了设定的 ...

  3. ngrinder安装

    1.源码编译和部署 官网:http://naver.github.io/ngrinder/ 下载源码后,存在部分依赖库不在maven的远程仓库中,这是可以用下载jar包后,用以下命令打包到本地仓库: ...

  4. 利用问答机器人API开发制作聊天类App

    缘起 很久没写项目了,所以单纯的想练练手,正好看到有问答机器人的接口,想到之前也做过聊天项目,为什么不实验一下呢.当然也是简单调用接口的项目,并没有真正的完成问答的算法等等.业余项目,功能不齐全,只实 ...

  5. Json_decode:详解

    Json_decode:详解 json_decode - 对 JSON 格式的字符串进行编码   mixed json_decode ( string $json [, bool $assoc = f ...

  6. JavaScript原生函数(内置函数)

    1.JavaScript原生函数(内置函数) JavaScript原生函数(内置函数)有: String() Number() Boolean() Array() Object() Function( ...

  7. python机器学习-逻辑回归

    1.逻辑函数 假设数据集有n个独立的特征,x1到xn为样本的n个特征.常规的回归算法的目标是拟合出一个多项式函数,使得预测值与真实值的误差最小: 而我们希望这样的f(x)能够具有很好的逻辑判断性质,最 ...

  8. python的threading和multiprocessing模块初探

    转载于:http://blog.csdn.net/zhaozhi406/article/details/8137670

  9. iOS定位服务CoreLocation

    欢迎訪问我的新博客: 开发人员说 基于LBS的应用开发是当今移动开发中的一大热门, 当中主要涉及到地图和定位两个方面. iOS开发中, 定位服务依赖于CoreLocation框架, CLLocatio ...

  10. How to manually remove an infected file from your computer

    http://blog.csdn.net/pipisorry/article/details/41258577 How to manually remove an infected file from ...