HttpMessageConverter найден для типа запроса [java.lang.Long] - PullRequest
0 голосов
/ 27 сентября 2019

SpringBoot

Преобразователь RestTemplate добавляет FormHttpMessageConverter.java и StringHttpMessageConverter, а также ResourceHttpMessageConverter и ByteArrayHttpMessageConverter,

Http-клиент, длинный в параметрах: parts.add); time ());1006 *

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
headers.setAccept(Collections.singletonList(MediaType.APPLICATION_FORM_URLENCODED));
headers.setAcceptCharset(Collections.singletonList(CharsetUtil.CHARSET_UTF_8));
FileSystemResource zipFile = new FileSystemResource(new File(file.getAbsolutePath()));
MultiValueMap<String, Object> parts = new LinkedMultiValueMap<>();
Long time = System.currentTimeMillis();
parts.add("time", time);
parts.add("md5", SecureUtil.md5(time + "234234").toUpperCase());
parts.add("file", zipFile);
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(parts, headers);

Что HttpMessageConverter поддерживает Long?

1 Ответ

0 голосов
/ 27 сентября 2019

По умолчанию весной доступны следующие конвертеры сообщений:

ByteArrayHttpMessageConverter – converts byte arrays
StringHttpMessageConverter – converts Strings
ResourceHttpMessageConverter – converts org.springframework.core.io.Resource for any type of octet stream
SourceHttpMessageConverter – converts javax.xml.transform.Source
FormHttpMessageConverter – converts form data to/from a MultiValueMap<String, String>.
Jaxb2RootElementHttpMessageConverter – converts Java objects to/from XML (added only if JAXB2 is present on the classpath)
MappingJackson2HttpMessageConverter – converts JSON (added only if Jackson 2 is present on the classpath)
MappingJacksonHttpMessageConverter – converts JSON (added only if Jackson is present on the classpath)
AtomFeedHttpMessageConverter – converts Atom feeds (added only if Rome is present on the classpath)
RssChannelHttpMessageConverter – converts RSS feeds (added only if Rome is present on the classpath)

При получении нового запроса Spring будет использовать заголовок «Accept» для определения типа носителя, на который он должен ответить.в вашем случае FormHttpMessageConverter - это преобразователь, выбранный по умолчанию весной, поскольку вы указали тип содержимого. При записи многочастных данных этот преобразователь использует другие HttpMessageConverters для записи соответствующих частей MIME. Класс FormHttpMessageConverter не смог найтиконвертер сообщений для типа Long.Таким образом, вы можете попробовать преобразовать Long в строку и присвоить его части:

                Long time = System.currentTimeMillis();
                parts.add("time", String.valueOf(time));
                parts.add("md5", SecureUtil.md5(time + "234234").toUpperCase());
                parts.add("file", zipFile);
                HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(parts, headers);

Doc

...