Spring REST - Um RestTemplate pode consumir multipartes / mistos?
Eu quero escrever um serviço REST que responde com um zipFile e alguns dados json, tudo em uma solicitação multipart / mista.
A parte do servidor funciona bem e eu estou testando com o REST Client do firefox. Meu servidor envia uma multiparte como esta
--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
Eu sei que o RestTemplate pode enviar multiparts com a ajuda de um MultiValueMap fora da caixa.
Agora tentei consumir respostas multipartidas / mistas e retornar um 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 existe para impedir o apagamento de tipos (genéricos).
Isto dá
org.springframework.web.client.RestClientException: Não foi possível extrair a resposta: nenhum HttpMessageConverter adequado foi encontrado para o tipo de resposta [class org.jlot.client.remote.MyMultiValueMap] e o tipo de conteúdo [multipart / form-data; boundary = Rjh-fkdsI9OIyPpYwdFY7lsUIewhRSX8kE19I; charset = UTF-8] em org.springframework.web.client.HttpMessageConverterExtractor.extractData (HttpMessageConverterExtractor.java:107) em org.springframework.web.client.RestTemplate.doExecute (RestTemplate.java:492)
O Javadoc do FormHttpMessageConverter diz que pode gravar, mas não ler multipart / form-data.
Por que é assim?
Existe uma maneira de ler multipart / form-data com RestTemplate out-of-the-box ou eu preciso escrever um HttpMessageConverter?