HttpURLConnection#getResponseCode() results in FileNotFoundE



我目前正在尝试访问位于 https://fnbr.co/api/shop 下的Web API(不是我的(。

我运行的代码基本上是这样的:

URL url = new URL("https://fnbr.co/api/shop");
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);
OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream());
writer.flush();
System.out.println(conn.getResponseCode()); // second error
BufferedReader reader = new BufferedReader(
new InputStreamReader(conn.getInputStream())); // first error
// read from this reader

控制台输出(响应代码(为

404

FileNotFoundException: https://fnbr.co/api/shop

在与conn.getInputStream()和另一个人的线上

FileNotFoundException: https://fnbr.co/api/shop

conn.getResponseCode()一致

我的问题在哪里(因为 404 应该意味着该文件不存在,但我可以通过浏览器访问它(?

HTTP 404 表示请求的 URL 不存在。这意味着在您的情况下,GET https://fnbr.co/api/shop 地址后面没有任何内容。也许您需要使用不同的协议,如 PUT、POST 等:

404 未找到 找不到请求的资源,但可能是 将来可用。客户端的后续请求是 允许。

以下是 HTTP 响应代码的官方说明。

你需要处理客户端代码中的错误,比如HTTP 404,这样你就可以读取响应(请记住,它不是文件,它是一个请求-响应!(,如果你得到HTTP 200,如下所示:

if (conn.getResponseCode() == 200) {
BufferedReader reader = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
}
conn.setDoOutput(true);

OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream());
writer.flush();

对于 GET 请求来说,这看起来是假的。

最新更新