为新手问题道歉,但我正在努力获取从客户端Web浏览器接收的HTTP Accept标头的完整内容(v 2.3.5)?
这:
this.request.getHeaders().getFirstValue("Accept",true);
不起作用,我只能* / *回来。
我也尝试过:
List<Preference<MediaType>> mediaTypes = this.request.getClientInfo().getAcceptedMediaTypes();
this.logger.debug(mediaTypes.toString());
for (Iterator it = mediaTypes.iterator();it.hasNext();) {
Preference<MediaType> preference = (Preference<MediaType>) it.next();
this.logger.debug(preference.toString());
}
同样,这只会分别返回[* / *:1.0]和* / *:1.0。
答案 0 :(得分:1)
实际上,Restlet提供了请求中存在的元素的对象表示。关于Accept
标头,您具有基于MediaType
类的以下规则:
application/json
,...)如果你想知道标题的相应值是:
Accept: media-type-value;q=quality,media-type-value;q=quality,media-type-value;q=quality
例如,如果使用代码getClientInfo().getAcceptedMediaTypes().toString()
获得以下值:
[text/html:1.0, application/xhtml+xml:1.0, application/xml:0.9, image/webp:1.0, */*:0.8]
相应的标题是:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
希望它可以帮到你, 亨利