gpt4 book ai didi

java - 从java中的URL读取: when is a request actually sent?

转载 作者:行者123 更新时间:2023-12-02 11:59:58 30 4
gpt4 key购买 nike

我的学校作业涉及编写一个简单的网络爬虫来爬行维基百科。该作业规定我不能使用任何外部库,因此我一直在使用 java.net.URL 类。基于official tutorial以及我的教授给出的一些代码:

public static void main(String[] args) {
System.setProperty("sun.net.client.defaultConnectTimeout", "500");
System.setProperty("sun.net.client.defaultReadTimeout", "1000");

try {
URL url = new URL(BASE_URL + "/wiki/Physics");
InputStream is = url.openStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));

String inputLine;
int lineNum = 0;
while ((inputLine = br.readLine()) != null && lineNum < 10) {
System.out.println(inputLine);
lineNum++;
}
is.close();
}
catch (MalformedURLException e) {
System.out.println(e.getMessage());
}
catch (IOException e) {
System.out.println(e.getMessage());
}
}

此外,作业要求:

Your program should not continuously send requests to wiki. Your program must wait for at least 1 second after every 10 requests

所以我的问题是,上面的代码中“请求”到底发送到哪里?这种连接是如何运作的?整个网页是一次性加载的吗?还是逐行下载?

老实说,我对网络不太了解,所以如果我误解了一些基本的东西,我很抱歉。任何帮助将不胜感激。

最佳答案

 InputStream is = url.openStream();

在上面的行中,您将发送请求

BufferedReader br = new BufferedReader(new InputStreamReader(is));

在这一行获取输入流并读取。

调用 url.openStream() 会启动一个到 URL 解析到的服务器的新 TCP 连接。然后通过连接发送 HTTP GET 请求。如果一切顺利(即 200 OK),服务器会发回 HTTP 响应消息,其中携带在指定 URL 上提供的数据有效负载。然后,您需要从 openStream() 方法返回的 InputStream 中读取字节,以便将数据有效负载检索到您的程序中。

关于java - 从java中的URL读取: when is a request actually sent?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47344666/

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