我第一次得到
引起:java.io.IOException:HTTP/1.1标头解析器未收到字节
(我的应用程序到目前为止似乎可以运行......)
HttpClient httpClient = HttpClient.newHttpClient();
HttpRequest httpRequest = HttpRequest
.newBuilder()
.GET()
.uri(URI.create("..."))
.header("Content-Type", "application/json")
.build();
System.out.print(httpRequest.toString()); // dbg - it's ok
HttpResponse<String> response = null;
try {
response = httpClient.send(httpRequest,
HttpResponse.BodyHandlers.ofString());
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
if (response != null && response.statusCode() == 200) {
JSONObject jsonObject = new JSONObject(response.body());
JSONArray jsonArray = jsonObject.getJSONArray("data");
ObjectMapper objectMapper = ObjectMapperCreator.getNewObjectMapper();
try {
if (jsonArray.length() > 0) {
correctlyCaught = true;
return objectMapper.readValue(jsonArray.get(0).toString(), GeocodingResponse.class);
}
} catch (IOException e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
这是代码。为什么我会收到此错误?
rzw*_*oot 17
HTTP 标头是服务器响应的第一个内容。
该错误表明它是空的。实际上,这个错误,粗略地翻译,意味着:“服务器绝对没有发送任何信息并挂断”。
这也解释了为什么“它以前有效”。不是你;就是那个服务器。它已损坏、离线或已更新或替换,因此无法再处理您的请求。
这个+其他链接的SO答案建议您强制使用HTTP/1.1模式 - 您只是在调整发送请求的方式,希望可以调整它,以便服务器不会被它阻塞。很可能服务器刚刚离线,您所要做的就是等待一段时间或与管理员联系。还可以尝试使用curl 或浏览器连接到URL,看看发生了什么。
另一个常见原因是他们只是将 HTTP(如非 HTTPS 端)脱机,或者它死了并且没有人注意到,因为没有人* 连接 HTTP 了。那么解决方法可能就是......在该 URL 中添加一个“s”。浏览器总是通过各种机制默默地将http://url 升级为https://url,但是 java HTTP 库不会这样做,除非您明确要求(通过使该 urlhttps为基础)。因此,请检查该 URL(它不在粘贴中):如果是http://,请考虑使用 重试https://。
只是旁注:
Run Code Online (Sandbox Code Playgroud)} catch (IOException | InterruptedException e) { e.printStackTrace(); } if (response != null && response.statusCode() == 200) {
请不要这样做。您在这里所写的是:如果发生错误,则不恰当地记录它(syserr 不是记录内容的适当位置),然后默默地不执行任何操作。你正在让自己陷入徒劳的追逐和失败的境地。帮自己一个忙。现在进入您的 IDE,找到配置自动完成模板的位置。摆脱那些无用的、令人畏缩的东西e.printStackTrace(),然后做到这一点throw new RuntimeException("Uncaught", e);。当发生你懒得处理的事情时,你最不想做的就是“默默地什么也不做”。您希望崩溃具有适当的堆栈跟踪。
小智 10
请尝试传递 HTTP 版本:
HttpClient.newBuilder()
.version(Version.HTTP_1_1)
.build();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21821 次 |
| 最近记录: |