我正在用Restlet構建某種代理服務器,但是我遇到了一個問題,那就是根據客戶端請求沒有自動確定MediaType
的方法。如何從請求中獲取MediaType
這裏是我的代碼:
Representation entity = null;
entity.setMediaType(processMediaType(path));
處理媒體類型:
private MediaType processMediaType(String path){
MediaType type = MediaType.ALL;
if(path.endsWith("html")){
type = MediaType.TEXT_HTML;
} else if (path.endsWith("css")) {
type = MediaType.TEXT_CSS;
} else if (path.endsWith("js")) {
type = MediaType.TEXT_JAVASCRIPT;
} else if (path.endsWith("txt")) {
type = MediaType.TEXT_PLAIN;
} else if (path.endsWith("jpg")){
type = MediaType.IMAGE_JPEG;
} else if (path.endsWith("png")){
type = MediaType.IMAGE_PNG;
}
return type;
}
我想知道如果的MediaType可以通過框架(或從該請求獲得的MediaType自動構造,這對我來說不起作用),因此我不需要執行這些if-else語句,這些語句在捕捉各種媒體類型方面非常有限。
這就像'getPreferredMediaType(null);'? – xybrek
@xybrek此刻是我離開提供您所支持的'MediaType'列表,因爲您可能希望對其進行硬編碼,從靜態常量或其他方式獲取它,最簡單的解決方案是'Arrays .asList(MediaType.TEXT_HTML,MediaType.TEXT_CSS,...等);'但是我沒有足夠的上下文來提示這是正確的。基本上用你所支持的類型列表替換上面的'null'。 – Caleryn