使用jersey客户端消耗spring REST api
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用jersey客户端消耗spring REST api相关的知识,希望对你有一定的参考价值。
我有一个用于上传多个文件的spring REST API。签名是
@RequestMapping(value = "uploadFiles", method = { RequestMethod.POST })
@ResponseBody
public CustomObject uploadFiles(@RequestParam("files") List<MultipartFile> uploads)
如何使用泽西客户端消费?我想将File或InputStream转换为MultiPartFile并能够将其发送到此端点。
答案
使用RestTemplate的示例
import java.io.File;
import org.springframework.core.io.FileSystemResource;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
try {
File file1 = new File("/Users/file1");
FileSystemResource fileSystemResource1 = new FileSystemResource(file1);
File file2 = new File("/Users/file2");
FileSystemResource fileSystemResource2 = new FileSystemResource(file2);
RestTemplate restTemplate = new RestTemplate();
HttpHeaders partHeaders = new HttpHeaders();
partHeaders.setContentType(MediaType.MULTIPART_FORM_DATA);
MultiValueMap<String, Object> data = new LinkedMultiValueMap<>();
data.add("files", fileSystemResource1);
data.add("files", fileSystemResource2);
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(data, partHeaders);
ResponseEntity<String> response = restTemplate.exchange(
endpoint, HttpMethod.POST,
requestEntity, String.class);
System.out.println(response.getBody() + " - " + response.getStatusCode());
} catch (Exception e) {
e.printStackTrace();
}
}
}
以上是关于使用jersey客户端消耗spring REST api的主要内容,如果未能解决你的问题,请参考以下文章
JAX-RS(基于Jersey) + Spring 4.x + MyBatis构建REST服务架构
我在 Spring Security REST 实现中得到空头值
Spring 4 vs Jersey 用于 REST Web 服务
Spring Boot + Jersey 类型过滤器 - 服务的错误请求 400 消耗 MULTIPART_FORM_DATA