Nam*_*man 3 java http http-redirect http2 java-9
我知道Java 9 提供的HTTP/2 客户端,并在尝试使用以下代码的孵化器模块时:
// Request builder
URI uri = new URI("http://www.stackoverflow.com/"); // using www.google.com gives me some payload with no exception
HttpRequest request = HttpRequest.newBuilder().uri(uri).GET().build();
// Client
HttpClient httpClient = HttpClient.newBuilder().followRedirects(HttpClient.Redirect.ALWAYS).build();
System.out.println(httpClient.version());
// Response builder
HttpResponse response = httpClient.send(request, HttpResponse.BodyHandler.asString());
System.out.println("statusCode = " + response.statusCode()); // 200 for google.com
Run Code Online (Sandbox Code Playgroud)
我收到了这个作为输出:
Run Code Online (Sandbox Code Playgroud)Exception in thread "main" java.io.IOException: /192.168.0.2:60726: GOAWAY received at jdk.incubator.httpclient/jdk.incubator.http.Http2Connection.handleGoAway(Http2Connection.java:613) at jdk.incubator.httpclient/jdk.incubator.http.Http2Connection.handleConnectionFrame(Http2Connection.java:531) at jdk.incubator.httpclient/jdk.incubator.http.Http2Connection.processFrame(Http2Connection.java:466) at jdk.incubator.httpclient/jdk.incubator.http.internal.frame.FramesDecoder.decode(FramesDecoder.java:114) at jdk.incubator.httpclient/jdk.incubator.http.Http2Connection$FramesController.processReceivedData(Http2Connection.java:152) at jdk.incubator.httpclient/jdk.incubator.http.Http2Connection.asyncReceive(Http2Connection.java:425) at jdk.incubator.httpclient/jdk.incubator.http.AsyncSSLDelegate.upperRead(AsyncSSLDelegate.java:557) at jdk.incubator.httpclient/jdk.incubator.http.internal.common.Queue.put(Queue.java:73) at jdk.incubator.httpclient/jdk.incubator.http.AsyncSSLDelegate.asyncReceive(AsyncSSLDelegate.java:503) at jdk.incubator.httpclient/jdk.incubator.http.PlainHttpConnection.asyncRead(PlainHttpConnection.java:300) at jdk.incubator.httpclient/jdk.incubator.http.PlainHttpConnection$ReadEvent.handle(PlainHttpConnection.java:395) at jdk.incubator.httpclient/jdk.incubator.http.HttpClientImpl$SelectorManager.handleEvent(HttpClientImpl.java:438) at jdk.incubator.httpclient/jdk.incubator.http.HttpClientImpl$SelectorManager.run(HttpClientImpl.java:408)
向下移动堆栈跟踪,我可以找到GOAWAY列为以下类型之一
jdk.incubator.http.internal.frame.Http2Frame
Run Code Online (Sandbox Code Playgroud)
但是内部类没有太多文档可以找到这种类型代表什么。我也尝试在 JEP 的链接上搜索相同的内容,但找不到任何内容。
问:什么是 GoAway 框架?何时以及如何使用?
问:为什么如果我更改我的代码以使用客户端而不遵循尝试获取“stackoverflow.com”的重定向,我不会收到相同的异常?
HttpClient httpClient = HttpClient.newBuilder().build();
Run Code Online (Sandbox Code Playgroud)
GOAWAY 帧(类型=0x7)用于启动服务器正常关闭连接。
很可能该帧是由服务器在第二个连接上发送的,即重定向之后的那个。
stackoverflow.com 上的所有 URL 都接受 http/2 连接吗?查看我的 HTTP/2-SPDY 浏览器插件的指标时,情况似乎并非如此。
| 归档时间: |
|
| 查看次数: |
6545 次 |
| 最近记录: |