Я хотел бы определить тип файла (обычно UTF-8), прочитав первую часть файла и проанализировав содержимое. (Тип специфичен для моего сообщества, но не находится под моим контролем и не охватывается MIME/MediaType, который обычно имеет значение TEXT_PLAIN). Я использую библиотеку org.restlet на клиенте для анализа заголовка с помощью
Request request = new Request(Method.HEAD, url);
так что я знаю длину контента и могу (если это необходимо и возможно) оценить, сколько байтов я должен загрузить для анализа
ПОЯСНЕНИЕ: я не могу использовать MediaType. Из ответа 1 кажется, что я должен ПОЛУЧИТЬ контент. Таким образом, пересмотренный вопрос будет следующим:
"Могу ли я ПОЛУЧИТЬ часть файла с помощью Restlet?"
ОТВЕТ: Следующий код делает то, что я хочу. Я поблагодарил @BalusC за указание пути. Пожалуйста, прокомментируйте, если я что-то пропустил:
public String readFirstChunk(String urlString, int byteCount) {
String text = null;
if (urlString != null) {
org.restlet.Client restletClient = new org.restlet.Client(Protocol.HTTP);
Request request = new Request(Method.GET, urlString);
List<Range> ranges = Collections.singletonList(new Range(0, byteCount));
request.setRanges(ranges);
Response response = restletClient.handle(request);
if (Status.SUCCESS_OK.equals(response.getStatus())) {
text = processSuccessfulChunkRequest(response);
} else if (Status.SUCCESS_PARTIAL_CONTENT .equals(response.getStatus())) {
text = processSuccessfulChunkRequest(response);
} else {
System.err.println("FAILED "+response.getStatus());
}
}
return text;
}
private String processSuccessfulChunkRequest(Response response) {
String text = null;
try {
text = response.getEntity().getText();
} catch (IOException e) {
throw new RuntimeException("Cannot download chunk", e);
}
return text;
}