我目前正在尝试访问位于 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 请求来说,这看起来是假的。