Недопустимый символ токена '/' в org.springframework.http.MediaType - PullRequest
1 голос
/ 04 июня 2019

У меня есть базовое приложение SpringBoot 2.1.5.RELEASE.Используя Spring Initializer, JPA, встроенный Tomcat;

Я хочу создать этот MediaType

MediaType mediaType = new MediaType("application/vnd.bonanza+xml");

, который в PostMan работает нормально, но не в RestTemplate

java.lang.IllegalStateException: Failed to execute CommandLineRunner
    at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:816)
    at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:797)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:324)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1260)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1248)
    at com.ideefecloud.IdeefeCloudApplication.main(IdeefeCloudApplication.java:48)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
Caused by: java.lang.IllegalArgumentException: Invalid token character '/' in token "application/vnd.bonanza+xml"

Ответы [ 2 ]

2 голосов
/ 04 июня 2019

Возможно, вы используете неправильный конструктор .этот конструктор принимает только тип как аргументы и обрабатывает подтип как *

Изменение:

MediaType mediaType = new MediaType("application/vnd.bonanza+xml");

К:

MediaType mediaType = MediaType.valueOf("application/vnd.bonanza+xml");

valueOf

public static MediaType valueOf(String value)

Анализировать указанное значение String в объект MediaType, имя этого метода следующеесоглашение об именах 'valueOf' (как поддерживается ConversionService.

Параметры :

value - строка для анализа

Throws :

InvalidMediaTypeException - если значение типа носителя не может быть проанализировано

ИЛИ:

MediaType mediaType = new MediaType("application", "vnd.bonanza+xml");

MediaType(String type, String subtype)

Создайте новый MediaType для данного основного типа и подтипа.

ИЛИ:

MediaType mediaType = MediaType.yourType;
1 голос
/ 04 июня 2019

Тип носителя состоит из типа и подтипа .Чтобы создать экземпляр MediaType, вы можете либо разделить тип и подтип в конструкторе , как показано ниже:

MediaType mediaType = new MediaType("application", "vnd.bonanza+xml");

Или вы можете использоватьvalueOf() вместо фабричного метода:

MediaType mediaType = MediaType.valueOf("application/vnd.bonanza+xml");
...