Java POST InputStream RestTemplate
我想将InputStream发布到服务器。 我使用Spring和RestTemplate来执行HTTP请求 客户Java POST InputStream RestTemplate,java,spring,post,inputstream,resttemplate,Java,Spring,Post,Inputstream,Resttemplate,我想将InputStream发布到服务器。 我使用Spring和RestTemplate来执行HTTP请求 客户 public void postSomething(InputStream inputStream) { String url = "localhost:8080/example/id RestTemplate restTemplate = new RestTemplate(); restTemplate.
public void postSomething(InputStream inputStream) {
String url = "localhost:8080/example/id
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new ByteArrayHttpMessageConverter());
restTemplate.postForLocation(url, inputStream, InputStream.class);
}
服务器
@PostMapping("/example/{id}")
public void uploadFile(@RequestBody InputStream inputStream, @PathVariable String id) {
InputStream inputStream1 = inputStream;
}
在客户端,我得到
没有[java.io.ByteArrayInputStream]的HttpMessageConverter
在服务器端,我得到无法构造“java.io.InputStream”的实例(不存在像默认构造函数那样的创建者):抽象类型要么需要映射到具体类型,具有自定义反序列化器,要么包含额外的类型信息用于字节[]
,而不是InputStream
,就像这个班的名字说的
没有内置的InputStream
,但是有一个,可以处理,例如
restemplate restemplate=new restemplate(Arrays.asList(new resourcehttmpessageconverter());
URI location=restTemplate.postForLocation(url,新的InputStreamResource(inputStream));
您不能通过HTTP传输流。HTTP是一种无状态协议,不支持字节传输。你能做的就是
读取整个输入流并将其作为字符串或任何其他形式输出
使用任何UDP形式的数据传输(SOAP或套接字)
为什么不改用multipart呢?非常感谢。它解决了这个问题。你让我开心:)