Java jdk.incubator.httpclient中的NullPointerException
我正在尝试使用JDK10中新的闪亮的httpclient。 代码非常简单。我使用多线程的同步HTTP调用:Java jdk.incubator.httpclient中的NullPointerException,java,http,nullpointerexception,java-10,java-http-client,Java,Http,Nullpointerexception,Java 10,Java Http Client,我正在尝试使用JDK10中新的闪亮的httpclient。 代码非常简单。我使用多线程的同步HTTP调用: private final HttpClient httpClient = HttpClient.newBuilder() .executor(Utils.newFixedThreadPoolExecutor(1, "HttpClient")) .build(); private JsonObject useHttpClient(URL url, Stri
private final HttpClient httpClient = HttpClient.newBuilder()
.executor(Utils.newFixedThreadPoolExecutor(1, "HttpClient"))
.build();
private JsonObject useHttpClient(URL url, String params) throws Exception {
HttpRequest req = HttpRequest.newBuilder()
.uri(url.toURI())
.setHeader("Connection", "keep-alive")
.setHeader("Accept-Encoding", "gzip")
.timeout(timeout)
.POST(HttpRequest.BodyPublisher.fromString(params))
.build();
HttpResponse<InputStream> response = httpClient.send(req, HttpResponse.BodyHandler.asInputStream());
if (response.statusCode() != 200) {
throw new IOException("Server returned " + response.statusCode());
}
String encoding = response.headers().firstValue("content-encoding").orElse("");
return parseResponseStream(encoding, response.body());
}
我的代码有问题吗?出现这种异常的原因是什么
C:\Program Files\Java\jdk-10\bin>java -version
java version "10" 2018-03-20
Java(TM) SE Runtime Environment 18.3 (build 10+46)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10+46, mixed mode)
我的代码有问题吗
作为熟悉JDK HTTP客户端API的人,我看不出您发布的代码有任何具体问题
出现这种异常的原因是什么
C:\Program Files\Java\jdk-10\bin>java -version
java version "10" 2018-03-20
Java(TM) SE Runtime Environment 18.3 (build 10+46)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10+46, mixed mode)
出现异常的原因是JDK HTTP客户端HPACK代码中的一个错误。在您的代码中,您无法解决它
关于JDK HPACK bug的具体信息可以在以下位置找到(复制上述OpenJDK JIRA问题中的技术信息,此处不会增加价值,并且可能很快过时)哪行代码抛出NPE?你能分享一个可复制的代码和一个完整的堆栈跟踪吗?@nullpointer NPE来自
send
方法。异常的堆栈跟踪不包含我的代码。我认为这是httpclient的特性(它在内部运行异步请求),感谢您报告这个问题。这确实是JDK HTTP客户端代码中的一个bug。已提交以下JIRA以跟踪它: