Skip to content

Commit 4671831

Browse files
committed
[java] Ensure Java 11 client works to support webdriver session
1 parent 7f7199c commit 4671831

2 files changed

Lines changed: 18 additions & 4 deletions

File tree

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ public void close() {
201201
}
202202

203203
private URI getWebSocketUri(HttpRequest request) {
204-
URI uri = messages.createRequest(request).uri();
204+
URI uri = messages.getRawURI(request);
205205
if ("http".equalsIgnoreCase(uri.getScheme())) {
206206
try {
207207
uri = new URI("ws", uri.getUserInfo(), uri.getHost(), uri.getPort(), uri.getPath(), uri.getQuery(), uri.getFragment());

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

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,14 @@
1919

2020
import org.openqa.selenium.remote.http.AddSeleniumUserAgent;
2121
import org.openqa.selenium.remote.http.ClientConfig;
22+
import org.openqa.selenium.remote.http.Contents;
23+
import org.openqa.selenium.remote.http.HttpMethod;
2224
import org.openqa.selenium.remote.http.HttpRequest;
2325
import org.openqa.selenium.remote.http.HttpResponse;
2426

2527
import java.io.InputStream;
2628
import java.net.URI;
29+
import java.net.URL;
2730
import java.net.URLEncoder;
2831
import java.net.http.HttpRequest.BodyPublishers;
2932
import java.util.Objects;
@@ -68,18 +71,24 @@ public java.net.http.HttpRequest createRequest(HttpRequest req) {
6871
break;
6972

7073
case POST:
71-
builder = builder.POST(BodyPublishers.ofInputStream(req.getContent()));
72-
break;
74+
// Copy the content into a byte array to avoid reading the content inputstream multiple times.
75+
builder = builder.POST(BodyPublishers.ofByteArray(Contents.bytes(req.getContent())));
76+
break;
7377

7478
case PUT:
75-
builder = builder.PUT(BodyPublishers.ofInputStream(req.getContent()));
79+
builder = builder.PUT(BodyPublishers.ofByteArray(Contents.bytes(req.getContent())));
7680
break;
7781

7882
default:
7983
throw new IllegalArgumentException(String.format("Unsupported request method %s: %s", req.getMethod(), req));
8084
}
8185

8286
for (String name : req.getHeaderNames()) {
87+
// Avoid explicitly setting content-length
88+
// This prevents the IllegalArgumentException that states 'restricted header name: "Content-Length"'
89+
if (name.equals("Content-Length")) {
90+
continue;
91+
}
8392
for (String value : req.getHeaders(name)) {
8493
builder = builder.header(name, value);
8594
}
@@ -106,6 +115,11 @@ private String getRawUrl(URI baseUrl, String uri) {
106115
return rawUrl;
107116
}
108117

118+
public URI getRawURI(HttpRequest req) {
119+
String rawUrl = getRawUrl(config.baseUri(), req.getUri());
120+
return URI.create(rawUrl);
121+
}
122+
109123
public HttpResponse createResponse(java.net.http.HttpResponse<InputStream> response) {
110124
HttpResponse res = new HttpResponse();
111125
res.setStatus(response.statusCode());

0 commit comments

Comments
 (0)