我想写这确实与一个zip文件和一些JSON数据,一切都在一个多/混合请求responed REST服务。
服务器部分工作正常,但我是从Firefox的REST客户端测试它。 我的服务器发送一个多这样的
--k-dXaXvCFusLVXUsg-ryiHMmkdttadgcBqi4XH
Content-Disposition: form-data; name="form"
Content-type: application/json
{"projectName":"test","signal":"true"}
--k-dXaXvCFusLVXUsg-ryiHMmkdttadgcBqi4XH
Content-Disposition: form-data; name="file2"; filename="file2.txt"
Content-type: application/octet-stream
Content-Length: 10
hallo=Welt
我知道,RestTemplate可以用MultiValueMap的帮助下发出的multipart开箱。
现在,我试图消耗多/混合响应并返回一个MultiValueMap
@Component
public class RestCommand
extends AbstractLoginRestCommand<Form, MultiValueMap<String, Object>>
{
@Override
protected MultiValueMap<String, Object> executeInternal ( Form form )
{
RestTemplate restTemplate = getRestTemplate();
MyMultiValueMap map = restTemplate.postForObject(getUrl(), form, MyMultiValueMap.class);
return new LinkedMultiValueMap<String, Object>(map);
}
}
class MyMultiValueMap extends LinkedMultiValueMap<String, Object>
{}
MyMultiValueMap存在,以防止类型擦除(泛型)。
这使
org.springframework.web.client.RestClientException:无法提取响应:没有合适HttpMessageConverter找到的响应类型[类org.jlot.client.remote.MyMultiValueMap]和内容类型[多部分/格式数据;边界= RJH-fkdsI9OIyPpYwdFY7lsUIewhRSX8kE19I;字符集= UTF-8]在org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:107)在org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:492)
FormHttpMessageConverter的Javadoc中说,能写,但不能读的multipart / form-data的。
为什么会这样呢?
有没有办法出的现成或者我需要写一个HttpMessageConverter与RestTemplate读的multipart / form-data的?