gpt4 book ai didi

java - 引起 : java. io.IOException : HTTP/1. 1 头解析器没有收到字节

转载 作者:行者123 更新时间:2023-12-04 12:16:11 33 4
gpt4 key购买 nike

我第一次得到

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


(到目前为止,我的应用程序似乎可以正常工作...)
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();
}
}
这是代码。为什么我收到这个错误?

最佳答案

HTTP header 是服务器响应的第一件事。
那个错误说它是空的。实际上,这个错误,松散地翻译,意味着:“服务器绝对没有回送任何东西并挂断了”。
这也解释了为什么“它以前有效”。不是你;就是那个服务器。它已损坏、脱机或已更新或更换,因此无法再处理您的请求。
这个 + 其他链接的 SO 答案建议您强制使用 HTTP/1.1 模式 - 您只是在按摩您发送请求的方式,希望您可以调整它,以便服务器不会阻塞它。服务器很可能只是离线,您所要做的就是等待一段时间或与管理员联系。还可以尝试连接到 URL,例如curl 或您的浏览器以查看发生了什么。
另一个常见的原因是他们只是将他们的 HTTP(如非 HTTPS 端)脱机或者它死了,没有人注意到,因为没有人* 再与 HTTP 连接。然后修复可能只是.. 在该 URL 中抛出一个 's'。浏览器默默升级http://网址为 https:// urls 一直通过各种机制,但 java HTTP 库不会这样做,除非你明确要求它(通过使该 url https 为基础)。因此,请检查该 URL(不在粘贴中):如果是 http:// ,考虑用 https:// 再试一次反而。
只是一个旁注:

} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
if (response != null && response.statusCode() == 200) {

请不要这样做。你在这里写的是:如果发生错误,不恰本地记录它(syserr 不是记录事情的合适地方),然后默默地什么都不做。您正在为自己的野鹅追逐和失败做好准备。帮自己一个忙。立即进入您的 IDE,找到您配置自动完成模板的位置。并摆脱那些无用的、令人畏缩的 e.printStackTrace()并制作 throw new RuntimeException("Uncaught", e); .当发生您懒得处理的事情时, 最后一件事你想要的是“默默地什么都不做”。您想要具有适当堆栈跟踪的崩溃。

关于java - 引起 : java. io.IOException : HTTP/1. 1 头解析器没有收到字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64353620/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com