Как повторно использовать соединения для чтения нескольких URL - PullRequest
0 голосов
/ 18 июня 2019

В настоящее время у меня есть метод, который создает InputStream из String (url).

Проблема в том, что мне нужно открывать новое соединение каждый раз, когда я хочу прочитать новый URL. У меня такое ощущение, что это слегка неэффективно, так как мой сетевой коммутатор решил отказаться от меня несколько раз.

Я хочу создать коллекцию соединений и просто «перенаправить» их, если я хочу прочитать новое изображение. Было бы неплохо, если бы хост веб-сайтов воспринимал это соединение как одного пользователя, который просматривает веб-сайт, вместо нескольких тысяч случайных соединений, приходящих с одного IP. Это может помешать получению случайных 403-х.

У меня есть около 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);
    }

Может быть, помогает

...