使用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的主要内容,如果未能解决你的问题,请参考以下文章

Jersey REST 服务抛出超时异常

JAX-RS(基于Jersey) + Spring 4.x + MyBatis构建REST服务架构

我在 Spring Security REST 实现中得到空头值

Spring 4 vs Jersey 用于 REST Web 服务

Jersey+Spring 实现rest 接口 服务调用

Spring Boot + Jersey 类型过滤器 - 服务的错​​误请求 400 消耗 MULTIPART_FORM_DATA