package glaze.util; import java.nio.charset.Charset; import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.HttpHeaders; import org.apache.http.HttpResponse; import org.apache.http.entity.ContentType; public final class ResponseUtil { public static final String DEFAULT_ENCODING = "UTF-8"; public static String resolveEncoding(HttpResponse response) { String encoding = null; HttpEntity entity = response.getEntity(); Header encHead = entity.getContentEncoding(); if (encHead == null) { ContentType ctype = ContentType.get(entity); encoding = fromContentType(ctype); } else { encoding = encHead.getValue(); } if (encoding == null) { encoding = fromContentEncoding(response.getFirstHeader(HttpHeaders.CONTENT_ENCODING)); } if (encoding == null) { Header ctHeader = response.getFirstHeader(HttpHeaders.CONTENT_TYPE); if (ctHeader != null) { encoding = fromContentType(ContentType.parse(ctHeader.getValue())); } } return encoding == null ? DEFAULT_ENCODING : encoding; } private static String fromContentEncoding(Header header) { return header == null ? null : header.getValue(); } private static String fromContentType(ContentType ctype) { if (ctype == null) { return null; } Charset charset = ctype.getCharset(); return charset == null ? null : charset.toString(); } }