使用RestTemplate 传输图片
public String addFood(String name, String desc, String price, String menu_category_id, MultipartFile[] files, String taste_ids,String language, String token) { Set<String> tempFilePath = new HashSet<>(); String postForObject = null; try { MultiValueMap<String, Object> params = new LinkedMultiValueMap<String, Object>(); params.add("name", name); params.add("desc", desc); params.add("price", price); params.add("menu_category_id", menu_category_id); params.add("taste_ids", taste_ids); params.add("token", token); params.add("language", language); if (null != files && files.length > 0) { for(MultipartFile file : files){ //生成临时的文件,完成传输后再删除 File tempFile = new File( UUID.randomUUID().toString()+file.getOriginalFilename()); tempFilePath.add(tempFile.getAbsolutePath()); //file.transferTo(tempFile); FileUtils.copyInputStreamToFile(file.getInputStream(), tempFile); FileSystemResource fileSystemResource = new FileSystemResource(tempFile); params.add("files", fileSystemResource); } } String path = iCateringPahtService.getCateringPath() + "addFoodAPI"; HttpHeaders headers = new HttpHeaders(); headers.set("Content-Type", "multipart/form-data"); HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<MultiValueMap<String, Object>>(params,headers); /*exchange = restTemplate.exchange(path, HttpMethod.POST, requestEntity, ResponseBean.class);*/ postForObject = restTemplate.postForObject(path, requestEntity, String.class); } catch (Exception e) { }finally { //删除临时的文件 if(null != tempFilePath && !tempFilePath.isEmpty()){ for(String path : tempFilePath){ File file = new File(path); if(file.exists()){ file.delete(); } } } } return postForObject; }
另一个controller接收即可
@RequestMapping(value="addFoodAPI",method=RequestMethod.POST) public String addFood(String name, String desc, String price, String menu_category_id, MultipartFile[] files, String taste_ids,String language, String token) { ResponseBean response = iCateringFoodService.addFood(name,desc,price,menu_category_id,files,taste_ids,language); return AESUtil.encrypResponseToString(response); }
相关推荐
3. **封装请求参数**:使用`FileSystemResource`将本地文件封装成可以在HTTP请求中传输的对象。此外,还可以添加其他参数,如文本参数等。 4. **发送请求并处理结果**:通过`RestTemplate`的`postForObject`方法...
Spring Cloud为了解决这个问题,提供了一种简单易用的工具——RestTemplate。本示例将详细解析如何利用RestTemplate进行服务间的调用,帮助开发者理解并实践相关知识。 首先,我们要知道什么是RestTemplate。...
然而,有时我们可能需要在不使用 Feign 注解的情况下,利用 RestTemplate 来实现类似的功能。本文将深入探讨如何使用 RestTemplate 进行 FeignClient 调用。 首先,让我们了解什么是 RestTemplate。RestTemplate 是...
RestTemplate 是 Spring 提供的一个用于发送 HTTP 请求的客户端工具,它可以方便地进行 GET、POST 等...在实际开发中,确保遵循安全最佳实践,不要明文传输敏感信息,如密码,而是应该使用安全的认证机制和传输层加密。
HTTP(超文本传输协议)是用于在Web上传输数据的应用层协议,而HTTPS(安全套接层超文本传输协议)是HTTP的安全版本,它通过SSL/TLS加密来保护数据传输的安全性。 1. HttpClient方式: Apache HttpClient是一个流行...
RestTemplate restTemplate = new RestTemplate(); String url = "http://jsonplaceholder.typicode.com/posts/1"; String str = restTemplate.getForObject(url, String.class); System.out.println(str); } ``...
在 Spring Boot 中,由于其内置的自动配置特性,使用 RestTemplate 更加方便。让我们深入探讨一下 RestTemplate 的核心概念、功能以及如何在实际应用中进行设置和使用。 1. **什么是 RestTemplate?** RestTemplate...
Spring 3.0 RestTemplate
本文将深入探讨`RestTemplate`的使用方法以及在实际应用中需要注意的关键点。 首先,让我们了解`RestTemplate`的基本用法。它支持GET、POST、PUT、DELETE等多种HTTP方法。例如,如果你需要发送一个GET请求,可以...
RestTemplate restTemplate = new RestTemplate(); restTemplate.setErrorHandler(new MyRestErrorHandler()); ``` 这样,当请求失败时,我们的`handleError`方法会被调用,允许我们捕获并处理异常,而不是让程序...
"RestTemplate请求失败自动重试机制"就是一个解决这个问题的策略。在上一节中,我们学习了如何自定义RestTemplate的异常处理,但那并不适用于自动重试。本节我们将探讨如何利用Spring Retry库来实现RestTemplate的...
SpringBoot系列之RestTemplate使用示例,博主之前经常对接一些接口,所以发现写一些http请求比较麻烦,学习springboot的过程知道可以用 RestTemplate来做http请求,RestTemplate 是 Spring Framework 框架封装的基于...
当某些接口超时、返回的数据有问题时需要对接口进行重试,但是有的接口需要重试三次,有的需要重试两次,有的不需要重试;有的返回连接超时才重试,...各种各样的场景,该源码实现了一个自定义定制化的重试RestTemplate
- **使用占位符传参**:`getForObject()`支持使用占位符,例如`restTemplate.getForObject(url, PostDTO.class, "posts", 1)`,这样可以根据业务需求动态构造URL。 4. JSONPlaceholder作为测试工具 ...
在 RestTemplate 中,multipartfile 是一种数据传输类型,主要用于文件上传和下载。下面将详细介绍 multipartfile 的概念、RestTemplate 上传文件的实现、RestTemplate 下载文件的实现,以及总结。 一、什么是 ...
在main方法中如何不让RestTemplate打印debug日志.md
RestTemplate restTemplate = new RestTemplate(new OkHttp3ClientHttpRequestFactory()); return restTemplate; } } ``` 3. 非Spring环境:若不在Spring环境中,可以直接实例化`RestTemplate`并传入`OkHttp3...
`Riptide`是由Zalando公司开发的一个库,它是对Spring`RestTemplate`的增强,特别关注于提高客户端的响应路由能力。响应路由允许我们在收到服务器响应后进行灵活的处理,比如根据不同的响应状态码或内容类型采取不同...