【问题标题】:Invalid token character '/' in org.springframework.http.MediaTypeorg.springframework.http.MediaType 中的标记字符“/”无效
【发布时间】:2019-10-20 02:45:03
【问题描述】:

我有一个基本的 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"

【问题讨论】:

    标签: rest spring-boot resttemplate restful-url media-type


    【解决方案1】:

    您可能使用了错误的constructor。此构造函数仅将 type 作为 arguments 并将 treats 子类型作为 *

    变化:

    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”命名约定的名称(由 转换服务。

    参数

    value - 要解析的字符串

    投掷

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

    或者:

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

    MediaType(String type, String subtype)

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

    或者:

    MediaType mediaType = MediaType.yourType;
    

    【讨论】:

      【解决方案2】:

      一个媒体类型由一个type和一个subtype组成。要创建MediaType 的实例,您可以在constructor 中拆分类型和子类型,如下所示:

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

      或者您可以使用 valueOf() 工厂方法代替:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-06-09
        • 2011-10-31
        • 1970-01-01
        • 1970-01-01
        • 2013-01-28
        • 1970-01-01
        • 2017-06-10
        相关资源
        最近更新 更多