Skip to content

Commit cd8b551

Browse files
committed
[java] Java HTTP client : Allow reading the response more than once
1 parent 0b85339 commit cd8b551

2 files changed

Lines changed: 6 additions & 4 deletions

File tree

java/src/org/openqa/selenium/remote/http/jdk/JdkHttpClient.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.openqa.selenium.remote.http.TextMessage;
3434
import org.openqa.selenium.remote.http.WebSocket;
3535

36+
import java.io.ByteArrayInputStream;
3637
import java.io.IOException;
3738
import java.io.InputStream;
3839
import java.io.UncheckedIOException;
@@ -230,9 +231,9 @@ private URI getWebSocketUri(HttpRequest request) {
230231
@Override
231232
public HttpResponse execute(HttpRequest req) throws UncheckedIOException {
232233
Objects.requireNonNull(req, "Request");
233-
BodyHandler<InputStream> streamHandler = BodyHandlers.ofInputStream();
234+
BodyHandler<byte[]> byteHandler = BodyHandlers.ofByteArray();
234235
try {
235-
return messages.createResponse(client.send(messages.createRequest(req), streamHandler));
236+
return messages.createResponse(client.send(messages.createRequest(req), byteHandler));
236237
} catch (HttpTimeoutException e) {
237238
throw new TimeoutException(e);
238239
} catch (IOException e) {

java/src/org/openqa/selenium/remote/http/jdk/JdkHttpMessages.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.openqa.selenium.remote.http.HttpRequest;
2424
import org.openqa.selenium.remote.http.HttpResponse;
2525

26+
import java.io.ByteArrayInputStream;
2627
import java.io.InputStream;
2728
import java.net.URI;
2829
import java.net.URLEncoder;
@@ -118,12 +119,12 @@ public URI getRawUri(HttpRequest req) {
118119
return URI.create(rawUrl);
119120
}
120121

121-
public HttpResponse createResponse(java.net.http.HttpResponse<InputStream> response) {
122+
public HttpResponse createResponse(java.net.http.HttpResponse<byte[]> response) {
122123
HttpResponse res = new HttpResponse();
123124
res.setStatus(response.statusCode());
124125
response.headers().map()
125126
.forEach((name, values) -> values.stream().filter(Objects::nonNull).forEach(value -> res.addHeader(name, value)));
126-
res.setContent(response::body);
127+
res.setContent(() -> new ByteArrayInputStream(response.body()));
127128

128129
return res;
129130
}

0 commit comments

Comments
 (0)