Spring REST - Czy RestTemplate może wykorzystywać wieloczęściowe / mieszane?
Chcę napisać usługę REST, która reaguje na plik zip i niektóre dane json, wszystko w jednym wieloczęściowym / mieszanym żądaniu.
Część serwerowa działa dobrze i testuję ją z klientem REST z firefox. Mój serwer wysyła taki wieloczęściowy plik
--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
Wiem, że RestTemplate może wysyłać wiele kart za pomocą MultiValueMap z pudełka.
Teraz próbowałem wykorzystać odpowiedzi wieloczęściowe / mieszane i zwrócić mapę 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 istnieje, aby zapobiec wymazywaniu typu (generics).
To daje
org.springframework.web.client.RestClientException: Nie można wyodrębnić odpowiedzi: nie znaleziono odpowiedniego HttpMessageConverter dla typu odpowiedzi [class org.jlot.client.remote.MyMultiValueMap] i typu treści [dane wieloczęściowe / dane formularza; granica = Rjh-fkdsI9OIyPpYwdFY7lsUIewhRSX8kE19I; charset = UTF-8] w org.springframework.web.client.HttpMessageConverterExtractor.extractData (HttpMessageConverterExtractor.java:107) w org.springframework.web.client.RestTemplate.doExecute (RestTemplate.java:492)
Javadoc FormHttpMessageConverter mówi, że może zapisywać, ale nie czytać danych wieloczęściowych / form.
Dlaczego tak jest?
Czy istnieje sposób, aby odczytywać dane wieloczęściowe / formularze za pomocą RestTemplate z pudełka lub czy muszę napisać HttpMessageConverter?