Какой Java 11+ HttpClient BodyHandler предоставляет фрагменты данных по мере их получения?JAVA

Программисты JAVA общаются здесь
Anonymous
Какой Java 11+ HttpClient BodyHandler предоставляет фрагменты данных по мере их получения?

Сообщение Anonymous »

Я хочу получать данные с сервера, который передает данные частями данных, например, построчно в моей ситуации.
Я проверил этот ответ, предлагая собственный 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

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