在 restlet 中获取完整的 HTTP Accept header 字符串?
Getting the full HTTP Accept header string in restlet?
对于这个新手问题,我深表歉意,但我正在努力寻找一种方法来从 restlet (v 2.3.5) 中获取从客户端 Web 浏览器接收到的 HTTP Accept header 的全部内容?
这个:
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());
}
同样,这仅 returns [*/*:1.0] 和 */*:1.0 分别。
事实上,Restlet 提供了请求中存在的元素的 object 表示。关于 Accept
header,你有以下基于 MediaType
class 的规则:
- 媒体类型的第一个元素对应媒体类型的值(例如:
application/json
, ...)
- 第二个给质量
值
如果想知道header对应的值是:
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]
对应的header为:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
希望对你有帮助,
蒂埃里
对于这个新手问题,我深表歉意,但我正在努力寻找一种方法来从 restlet (v 2.3.5) 中获取从客户端 Web 浏览器接收到的 HTTP Accept header 的全部内容?
这个:
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());
}
同样,这仅 returns [*/*:1.0] 和 */*:1.0 分别。
事实上,Restlet 提供了请求中存在的元素的 object 表示。关于 Accept
header,你有以下基于 MediaType
class 的规则:
- 媒体类型的第一个元素对应媒体类型的值(例如:
application/json
, ...) - 第二个给质量 值
如果想知道header对应的值是:
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]
对应的header为:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
希望对你有帮助, 蒂埃里