+18
-4
lines changedFilter options
+18
-4
lines changed Original file line number Diff line number Diff line change
@@ -201,7 +201,7 @@ public void close() {
201
201
}
202
202
203
203
private URI getWebSocketUri(HttpRequest request) {
204
-
URI uri = messages.createRequest(request).uri();
204
+
URI uri = messages.getRawURI(request);
205
205
if ("http".equalsIgnoreCase(uri.getScheme())) {
206
206
try {
207
207
uri = new URI("ws", uri.getUserInfo(), uri.getHost(), uri.getPort(), uri.getPath(), uri.getQuery(), uri.getFragment());
Original file line number Diff line number Diff line change
@@ -19,11 +19,14 @@
19
19
20
20
import org.openqa.selenium.remote.http.AddSeleniumUserAgent;
21
21
import org.openqa.selenium.remote.http.ClientConfig;
22
+
import org.openqa.selenium.remote.http.Contents;
23
+
import org.openqa.selenium.remote.http.HttpMethod;
22
24
import org.openqa.selenium.remote.http.HttpRequest;
23
25
import org.openqa.selenium.remote.http.HttpResponse;
24
26
25
27
import java.io.InputStream;
26
28
import java.net.URI;
29
+
import java.net.URL;
27
30
import java.net.URLEncoder;
28
31
import java.net.http.HttpRequest.BodyPublishers;
29
32
import java.util.Objects;
@@ -68,18 +71,24 @@ public java.net.http.HttpRequest createRequest(HttpRequest req) {
68
71
break;
69
72
70
73
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;
73
77
74
78
case PUT:
75
-
builder = builder.PUT(BodyPublishers.ofInputStream(req.getContent()));
79
+
builder = builder.PUT(BodyPublishers.ofByteArray(Contents.bytes(req.getContent())));
76
80
break;
77
81
78
82
default:
79
83
throw new IllegalArgumentException(String.format("Unsupported request method %s: %s", req.getMethod(), req));
80
84
}
81
85
82
86
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
+
}
83
92
for (String value : req.getHeaders(name)) {
84
93
builder = builder.header(name, value);
85
94
}
@@ -106,6 +115,11 @@ private String getRawUrl(URI baseUrl, String uri) {
106
115
return rawUrl;
107
116
}
108
117
118
+
public URI getRawURI(HttpRequest req) {
119
+
String rawUrl = getRawUrl(config.baseUri(), req.getUri());
120
+
return URI.create(rawUrl);
121
+
}
122
+
109
123
public HttpResponse createResponse(java.net.http.HttpResponse<InputStream> response) {
110
124
HttpResponse res = new HttpResponse();
111
125
res.setStatus(response.statusCode());
You can’t perform that action at this time.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4