我目前有一种方法,可以从 String (网址)创建 InputStream 。
问题是,每次我想从新URL读取时,我都必须打开一个新连接。我感觉这有点低效,因为我的网络交换机决定几次放弃我。
我想建立连接的集合,如果我想读取新图像,只需“重定向”它们。 如果网站托管人将此连接看作是一个“浏览”网站的用户,而不是一个IP产生的数千个随机连接,那将是很好的选择。这样可以防止随便的403s即时通讯。
我有大约2-3百万个URL要连接。 因为这对我来说是一个相当新的领域,所以我尝试使用URL.class和URLConnection.class中的几种方法。到目前为止没有成功。
private Optional<InputStream> readImage(String urlString, int fromIndex, int trys) {
InputStream inStream = null;
try {
inStream = new URL(urlString).openConnection().getInputStream();
} catch (IOException e) {
if(trys <= 3) {
return readImage(urlString, fromIndex, ++trys);
}
}
return Optional.ofNullable(inStream);
}