InputStream.available() странное поведениеPhp

Кемеровские программисты php общаются здесь
Anonymous
InputStream.available() странное поведение

Сообщение Anonymous »

У меня есть исходный код работающего проекта, который, к сожалению, уже развернут для клиентов.
Следующий код Java запускает процесс обновления:

Код: Выделить всё

public void downloadChanges() throws IOException {
try (InputStream is = WebClient.doRawRequest(HttpMethod.GET, machinePath + "/update/", null)) { //IOexception is thrown outside
if (is.available() == 0) {
logInfo("Nothing downloaded");
}

//continue with downloaded stuff
}
}
Теперь мне нужно написать для этого новый бэкэнд.
Я не знаю, какого черта is.available() всегда возвращает 0.
Я узнал об InputStream.available() не работает
но поскольку изменить Java-код здесь невозможно, я открыл новый поток.
Я попробовал добавить некоторый отладочный код для тестирования в Java-код, поэтому он будет выглядеть так:

Код: Выделить всё

           if (is.available() == 0) {
byte[] data = is.readNBytes(2048 * 1024);
String content = new String(data, StandardCharsets.UTF_8);
System.out.println(content);
System.out.println("Nothing downloaded.");
return;
}
В этом случае я получаю полный и правильный ответ от своего программного обеспечения PHP.
У кого-нибудь есть идеи, как правильно настроить мой PHP для работы с is.available?
Я не могу изменить код Java, и мне нужно запустить мой сервер, независимо от того, насколько это будет хакерски.
Мы не можем посетить каждого клиента по всему миру....

Подробнее здесь: https://stackoverflow.com/questions/787 ... e-behavior

Вернуться в «Php»