在阅读并尝试各种方法来阅读网站内容后,我意识到我无法获得安全网页的输入流(或者必须等待几分钟才能获得单一响应)。这些是我可以通过浏览器轻松访问的页面(不涉及代理)。
我尝试的不同修复程序如下:
两种基本方法似乎最受欢迎,一种使用Jsoup:
Document doc = Jsoup.connect(url)
.userAgent(userAgent)
.timeout(5000).followRedirects(true).execute().parse();
Elements body = doc.select("body");
System.out.println(body.html());
另一个与vanilla Java:
URL obj = new URL(url);
CookieHandler.setDefault(new CookieManager(null, CookiePolicy.ACCEPT_ALL));
HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("User-Agent", userAgent);
con.setConnectTimeout(5000);
con.setReadTimeout(5000);
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
执行阶段 https 地址(例如https://en.wikipedia.org/wiki/Java)的执行进入一个痛苦的慢循环(因此也无法从响应中检索到状态代码),或者在第二次尝试的情况下正在获取输入流。这两种方法对于不安全的地址(例如http://www.codingpedia.org/)完全正常 - 切换到HttpURLConnection。
奇怪的是,等待时光盘使用率非常高(> 20 MB /秒)。
非常感谢所有人的帮助!