Я проверил этот ответ, предлагая собственный BodySubscriber, а также этот использует InputStream.
Вот как сейчас выглядит мой код:
Код: Выделить всё
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.function.Consumer;
import java.util.stream.Stream;
public class HttpClientTest {
public static final String BASE_URL = "http://localhost:8080/chunked";
public static void main(String[] args) throws Exception {
System.out.println("Starting HttpClientTest");
HttpClientTest httpTest = new HttpClientTest();
httpTest.run();
}
Consumer dataSink = new Consumer() {
int count = 0;
@Override
public void accept(String t) {
// Some logic here for line processing - omitted for brevity
System.out.println(t);
count++;
System.out.println("Count: " + count);
}
};
void run() throws Exception {
HttpClient client = HttpClient.newBuilder().build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(BASE_URL)).GET().build();
HttpResponse response =
client.send(request, HttpResponse.BodyHandlers.ofLines());
response.body().forEach(dataSink);
System.out.println("done");
}
}
Javadoc BodyHandler не предоставляет никакой информации об обработке фрагментированных данных. Нужен ли мне другой обработчик, возможно, собственный? Какова функция BodyHandler?
Подробнее здесь: https://stackoverflow.com/questions/790 ... re-receive