Skip to content

Commit cd1ea43

Browse files
author
wlanboy
committed
http2 support
1 parent 141beb9 commit cd1ea43

File tree

3 files changed

+17
-4
lines changed

3 files changed

+17
-4
lines changed

src/main/java/com/wlanboy/javahttpclient/client/ClientService.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public class ClientService {
3030

3131
public ClientService() {
3232
client = HttpClient.newBuilder()
33-
.version(Version.HTTP_1_1)
33+
.version(Version.HTTP_2)
3434
.followRedirects(Redirect.NORMAL)
3535
.connectTimeout(Duration.ofSeconds(10))
3636
.build();
@@ -80,8 +80,13 @@ public ResponseEntity<String> sendRequest(JavaHttpRequest requestData, HttpHeade
8080
HttpHeaders responseHeaders = new HttpHeaders();
8181
response.headers().map().forEach(responseHeaders::addAll);
8282

83+
String protocolVersion = response.version() == Version.HTTP_2 ? "HTTP/2" : "HTTP/1.1";
84+
8385
return ResponseEntity.status(response.statusCode())
84-
.headers(h -> h.addAll(responseHeaders))
86+
.headers(h -> {
87+
h.addAll(responseHeaders);
88+
h.set("X-Protocol-Version", protocolVersion);
89+
})
8590
.body(response.body());
8691

8792
} catch (Exception e) {

src/main/resources/public/index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@
8888
<div class="d-flex align-items-center justify-content-between mb-3">
8989
<div>
9090
<span id="statusBadge" class="badge fs-6 shadow-sm"></span>
91+
<span id="protocolBadge" class="badge bg-secondary ms-2 shadow-sm" style="display:none;"></span>
9192
<span id="responseTime" class="ms-3 text-muted small fw-bold"></span>
9293
</div>
9394
</div>

src/main/resources/public/js/http-client.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ document.addEventListener('DOMContentLoaded', () => {
88
const responseOutput = document.getElementById('responseOutput');
99
const errorBox = document.getElementById('errorBox');
1010
const statusBadge = document.getElementById('statusBadge');
11+
const protocolBadge = document.getElementById('protocolBadge');
1112
const responseTimeText = document.getElementById('responseTime');
1213
const stacktraceArea = document.getElementById('stacktraceArea');
1314
const toggleStackBtn = document.getElementById('toggleStackBtn');
@@ -75,8 +76,9 @@ document.addEventListener('DOMContentLoaded', () => {
7576

7677
const duration = Date.now() - startTime;
7778
const data = await response.text();
79+
const protocol = response.headers.get('x-protocol-version') ?? '';
7880

79-
updateResponseMetadata(response.status, duration);
81+
updateResponseMetadata(response.status, duration, protocol);
8082
addToHistory(payload, response.status, duration, data);
8183

8284
if (response.status === 502 && data.includes("---STACKTRACE---")) {
@@ -127,10 +129,15 @@ document.addEventListener('DOMContentLoaded', () => {
127129
if (toggleStackBtn) toggleStackBtn.textContent = 'Stacktrace Details';
128130
}
129131

130-
function updateResponseMetadata(status, duration) {
132+
function updateResponseMetadata(status, duration, protocol = '') {
131133
statusBadge.innerText = `HTTP ${status}`;
132134
statusBadge.className = `badge p-2 ${status >= 200 && status < 300 ? 'bg-success' : 'bg-danger'}`;
133135
responseTimeText.innerText = `Dauer: ${duration}ms`;
136+
if (protocol && protocolBadge) {
137+
protocolBadge.innerText = protocol;
138+
protocolBadge.className = `badge ms-2 shadow-sm ${protocol === 'HTTP/2' ? 'bg-primary' : 'bg-secondary'}`;
139+
protocolBadge.style.display = '';
140+
}
134141
}
135142

136143
function handleDetailedError(data) {

0 commit comments

Comments
 (0)