Java 11 HttpClient 带代理,标头解析器未收到任何字节



尝试使用java.net.http.HttpClient发出简单的 get 请求。 它无需使用代理即可工作。代理有效且有效。代理支持 https/s 和 socks5 连接。但是,当我尝试使用代理(如示例中所示(时,收到此错误:

java.io.IOException: HTTP/1.1 header parser received no bytes

我认为我正确地将代理传递到客户端(如此处的示例 https://openjdk.java.net/groups/net/httpclient/recipes.html(,尽管我传递的是代理IP,而不是域,这似乎被InetSocketAddress接受。

例:

HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("http://google.com"))
.headers("Content-Type", "application/json;charset=UTF-8")
.GET()
.build();
HttpResponse<String> response = HttpClient
.newBuilder()
.connectTimeout(Duration.ofSeconds(15))
.proxy(ProxySelector.of(
new InetSocketAddress(
"1.1.1.1", 1111
)
))
.build()
.send(request, HttpResponse.BodyHandlers.ofString());

就我而言,我通过将首选协议设置为 HTTP 1.1 来修复它。

HttpClient.newBuilder()
.version(Version.HTTP_1_1)

相关内容

最新更新