org.springframework.http.MediaType 中的无效标记字符“/”

Nuñ*_*ada 3 rest media-type restful-url resttemplate spring-boot

我有一个基本的 SpringBoot 2.1.5.RELEASE 应用程序。使用Spring Initializer、JPA、嵌入式Tomcat;

我想创建这个 MediaType

MediaType mediaType = new MediaType("application/vnd.bonanza+xml");
Run Code Online (Sandbox Code Playgroud)

在 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"
Run Code Online (Sandbox Code Playgroud)

Pat*_*mil 5

您可能使用了错误的构造函数。这个构造函数只键入作为参数对待亚型*

改变:

MediaType mediaType = new MediaType("application/vnd.bonanza+xml");
Run Code Online (Sandbox Code Playgroud)

到:

MediaType mediaType = MediaType.valueOf("application/vnd.bonanza+xml");
Run Code Online (Sandbox Code Playgroud)

public static MediaType valueOf(String value)

将给定的 String 值解析为 MediaType 对象,此方法名称遵循“valueOf”命名约定(由 ConversionService 支持。

参数

value - 要解析的字符串

抛出

InvalidMediaTypeException - 如果无法解析媒体类型值

或者:

MediaType mediaType = new MediaType("application", "vnd.bonanza+xml");
Run Code Online (Sandbox Code Playgroud)

MediaType(String type, String subtype)

为给定的主要类型和子类型创建一个新的 MediaType。

或者:

MediaType mediaType = MediaType.yourType;
Run Code Online (Sandbox Code Playgroud)