使用RestTemplate调用接口上传文件
场景
接口接受一个文件,缓存在本地,验证文件的完整性及内容,然后将文件上传至云服务器;
下面只写利用RestTemplate将文件上传至云服务器,至于文件上传以及缓存在本地可以参考:JAVA文件上传:RESTFUL接口接收上传文件,缓存在本地
代码
@Test
public void restTemplateTransferFile(){
final String filePath = "F:";
final String fileName = "testFile.txt";
final String url = "http://localhost:8080/file/upload"; RestTemplate restTemplate = new RestTemplate(); //设置请求头
HttpHeaders headers = new HttpHeaders();
MediaType type = MediaType.parseMediaType("multipart/form-data");
headers.setContentType(type); //设置请求体,注意是LinkedMultiValueMap
FileSystemResource fileSystemResource = new FileSystemResource(filePath+"/"+fileName);
MultiValueMap<String, Object> form = new LinkedMultiValueMap<>();
form.add("file", fileSystemResource);
form.add("filename",fileName); //用HttpEntity封装整个请求报文
HttpEntity<MultiValueMap<String, Object>> files = new HttpEntity<>(form, headers); String s = restTemplate.postForObject(url, files, String.class);
System.out.println(s);
}
利用HttpHeader将请求头的设置为"multipart/form-data";
利用FileSystemResource封装文件内容,将请求体用LinkedMultiValueMap封装;
再用HttpEntity封装整个请求报文;
最后利用RestTemplate post请求。
注意
这里我使用的是原生的RestTemplate(直接new的),比如使用OAuth2RestTemplate用上面这种方式传输文件,可能出现RestClientException,原因可能是OAuth2RestTemplate的HttpMessageConvert不能匹配MultiValueMap。
参考:https://blog.csdn.net/kahhy/article/details/78115698
使用RestTemplate调用接口上传文件的更多相关文章
- RestTemplate通过InputStreamResource上传文件
需求:从ftp取文件并http调用某接口上传此文件 偷懒的话可以从ftp上取文件存到本地,再调用接口上传文件,如下 String ftpPath = "/ftp/path/file.bin& ...
- Shell脚本调用ftp上传文件
Shell脚本调用ftp上传文件 1.脚本如下 ftp -n<<! open x.x.x.x ###x.x.x.x为ftp地址 user username password ###user ...
- 使用python或robotframework调multipart/form-data接口上传文件
这几天调一个multipart/form-data类型的接口,遇到点小阻碍.之前同事有使用urllib库写了个类似的方法实现,比较长,想要改的时候发现不太好使.在网上查找发现用requests库做这个 ...
- C# HttpWebRequest 后台调用接口上传大文件以及其他参数
直接上代码,包各位看客能用!!! 1.首先请求参数的封装 /// <summary> /// 上传文件 - 请求参数类 /// </summary> public class ...
- java 调用Spring接口上传文件及其他参数填充
第一步:在Spring配置中添加以下内容 <!-- 配置MultipartResolver 用于文件上传 使用spring的CommosMultipartResolver --> < ...
- Jmeter接口上传文件
一.使用抓包软件抓取该接口,查看参数(图例使用的是charles) 可以看到上传文件的参数名是file1 二.把抓取到的普通参数都放在参数这一栏里,如图所示,不要在意马赛克 三.参数名称写在如图所示的 ...
- C# 使用HttpWebRequest通过PHP接口 上传文件
1:上传文件实例 public void UploadXMLLog(string xmlpath) { NameValueCollection nvc = ne ...
- JAVA调用FTP上传文件
import java.io.File; import java.io.FileInputStream; import org.apache.commons.net.ftp.FTP; import o ...
- Android、iOS与Servlet接口上传文件和JSON串的交互
package etcom.servlet; import java.io.File; import java.io.IOException; import java.sql.Connection; ...
随机推荐
- Android标题头滑动渐变,Titlebar滑动渐变,仿美团饿了么标题头渐变;
原理就是滑动中改变透明度: 核心代码: rv.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public vo ...
- Win7 发生验证错误 要求的函数不受支持
今天登陆服务器突然登不上了,给我报了一个错误“发生验证错误 要求的函数不受支持”,用同事的win7电脑和win10电脑都可以,就是我的不行,气死我了,然后我百度百度啊,用了好几种“说用了就OK”的办法 ...
- 导入sql文件报错:1071 Specified key was too long; max key length is 767 bytes
ref: https://stackoverflow.com/questions/1814532/1071-specified-key-was-too-long-max-key-length-is-7 ...
- centos6安装python3
1.安装环境 #yum install gcc zlib-devel make 2.下载python版本 #wget http://www.python.org/ftp/python/3.*.0/Py ...
- jl1.如何设置元素的宽高包含元素的边框和内边距
方法一: 文档地址:http://www.w3school.com.cn/cssref/pr_box-sizing.asp CSS3 box-sizing属性: box-sizing: bord ...
- 《算法》第六章部分程序 part 7
▶ 书中第六章部分程序,加上自己补充的代码,包括全局最小切分 Stoer-Wagner 算法,最小权值二分图匹配 ● 全局最小切分 Stoer-Wagner 算法 package package01; ...
- 零配置使用springboot
1.pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="h ...
- twisted的DelayedCall
>>> l=[,,,,] >>> del l[:]#只是删除列表的部分元素,列表仍然存在 >>> l [, ] #reactor循环执行的函数de ...
- ASP.net 完整登录流程
登录流程 using System; using System.Collections.Generic; using System.Linq; using System.Web; using Syst ...
- 开发MIS系统的相关技术
Java Web应用的核心技术包括以下几个方面:● JSP:进行输入和输出的基本手段.● JavaBean:完成功能的处理.● Servlet:对应用的流程进行控制.● JDBC:是与数据库进行交互不 ...