ams*_*ams 2 java spring spring-mvc
我想在 Spring 中解析 HTTP 接受标头以确定是否可以发回 JSON。我正在尝试使用以下代码。
class MediaTypeUtil {
private final static Logger logger = LoggerFactory.getLogger(MediaTypeUtil.class);
static boolean acceptsJson(HttpServletRequest request) {
try {
String accept = request.getHeader("Accept");
MediaType requestType = MediaType.valueOf(accept);
return MediaType.APPLICATION_JSON.isCompatibleWith(requestType);
} catch (InvalidMediaTypeException e) {
logger.debug("MediaType parsing error",e);
return false;
}
}
}
Run Code Online (Sandbox Code Playgroud)
当请求到达时接受标头值为application/json, application/javascript, text/javascript, text/json
我最终会出现异常
Caused by: org.springframework.util.InvalidMimeTypeException: Invalid mime type "application/json, application/javascript, text/javascript, text/json": Invalid token character ',' in token "json, application/javascript, text/javascript, text/json"
at org.springframework.util.MimeTypeUtils.parseMimeTypeInternal(MimeTypeUtils.java:262)
Run Code Online (Sandbox Code Playgroud)
这段代码是从 Servlet 过滤器中使用的,所以我不能依赖 SpringMVC 注释。
Spring是否有解析接受标头并确定它是否与特定媒体类型兼容的方法?
Spring 本身在内部的做法与您完全一样(即从请求中获取 ACCEPT 标头),但它们将其提供给此调用:
MediaType.parseMediaTypes(get(ACCEPT));
Run Code Online (Sandbox Code Playgroud)
这将返回您List<MediaType>
需要使用的一个。
归档时间: |
|
查看次数: |
1858 次 |
最近记录: |