自定义内容类型能否包含@?与jersy客户的Restful通话

自定义内容类型能否包含@?与jersy客户的Restful通话,rest,jersey,content-type,jersey-2.0,media-type,Rest,Jersey,Content Type,Jersey 2.0,Media Type,尝试调用仅接受应用程序的restful服务/xxxx@1.0作为内容类型,服务也将使用此内容类型返回其有效负载(二进制流) 我正在使用jersey客户端进行调用,我得到了以下错误,这是否意味着jersey客户端不支持任何带有@inside的内容类型 谢谢 原因:java.lang.IllegalArgumentException:解析媒体时出错 类型“应用程序/x-xxx”-data@1.0' 位于org.glassfish.jersey.message.internal.MediaTypePr

尝试调用仅接受应用程序的restful服务/xxxx@1.0作为内容类型,服务也将使用此内容类型返回其有效负载(二进制流)

我正在使用jersey客户端进行调用,我得到了以下错误,这是否意味着jersey客户端不支持任何带有@inside的内容类型

谢谢

原因:java.lang.IllegalArgumentException:解析媒体时出错 类型“应用程序/x-xxx”-data@1.0' 位于org.glassfish.jersey.message.internal.MediaTypeProvider.fromString(MediaTypeProvider.java:92) 位于org.glassfish.jersey.message.internal.MediaTypeProvider.fromString(MediaTypeProvider.java:60) 位于javax.ws.rs.core.MediaType.valueOf(MediaType.java:179) 位于org.glassfish.jersey.message.internal.InboundMessageContext$5.apply(InboundMessageContext.java:446)     ... 48其他原因:java.text.ParseException:应为分隔符“;”而不是“@” 位于org.glassfish.jersey.message.internal.HttpHeaderReader.nextSeparator(HttpHeaderReader.java:115) 位于org.glassfish.jersey.message.internal.HttpHeaderReader.readParameters(HttpHeaderReader.java:249) 位于org.glassfish.jersey.message.internal.HttpHeaderReader.readParameters(HttpHeaderReader.java:242) 位于org.glassfish.jersey.message.internal.MediaTypeProvider.valueOf(MediaTypeProvider.java:110) 位于org.glassfish.jersey.message.internal.MediaTypeProvider.fromString(MediaTypeProvider.java:90)

类型和子类型名称必须符合以下ABNF:

 type-name = reg-name
 subtype-name = reg-name

 reg-name = 1*127reg-name-chars
 reg-name-chars = ALPHA / DIGIT / "!" /
                   "#" / "$" / "&" / "." /
                   "+" / "-" / "^" / "_"`
@
不是允许的字符之一。你可以这样
“application/xxx!#$&.+-^_1.0”
,它会工作的

流向异常:

  • 维护一个

private static final char[] SEPARATORS =
    {'(', ')', '<', '>', '@', ',', ';', ':', '\\', '"', 
     '/', '[', ']', '?', '=', '{', '}', ' ', '\t'};
if (c != getEventValue().charAt(0)) {
    throw new ParseException("Expected separator '" + c + "' instead of '"
            + getEventValue().charAt(0) + "'", getIndex());