Странная NumberFormatException
Итак, пишу чекер для прокси, получаемых через api. Принцип простой - сначала парсится список и с помощью split("\n") разбивается на отдельные прокси. Далее я перебираю циклом каждый прокси, применяю и get запросом на определенный ресурс, получаю ip, с которого произведен запрос, который в последствии сравниваю с ip прокси. Если все верно, то прокси идет в список рабочих. Казалось, что никаких проблем в работе такой схемы быть не должно, тем более уже есть готовый вариант на python, но... Проблемы пришли откуда не ждали.
В цикле проверки прокси я сначала разбиваю полученную мною строку типа "1.10.188.78:45208" с помощью split(":"), а затем этот строковый массив использую для применения прокси к запросу:
val p: List<String> = proxyList[i].split(":")
val proxy = Proxy(Proxy.Type.HTTP, InetSocketAddress(p[0], p[1].toInt()))
Но как раз на моменте перевода p[1] в Int я ловлю NFE. Причем в строчке нет никаких символов, кроме цифр. Я пробовал и Integer.parseInt(p[1]), а так же переводить в Int до применения прокси, однако ловлю NFE. Когда же я попробовал сделать так, все работало, однако прокси приходят с разными портами и была уже другая ошибка:
val proxy = Proxy(Proxy.Type.HTTP, InetSocketAddress(p[0], "8000".toInt()))
При этом в proxy чекерах с гитхаба все работает примерно так же, как здесь например.
Пример моего NFE:
java.lang.NumberFormatException: For input string: "8080"
Ответы (2 шт):
Попробуйте удалить невидимые символы в строке
val p: List<String> = proxyList[i].split(":")
val proxy = Proxy(Proxy.Type.HTTP, InetSocketAddress(p[0].trim(), p[1].trim().toInt()))
Спасибо Вася Воронцов, решил проблему вот так:
val p: List<String> = proxyList[i].split(":")
var int: String = p[1]
int = int.replace("[^0-9]", "")
println(int)
val proxy = Proxy(Proxy.Type.HTTP, InetSocketAddress(p[0], int.toInt()))
Однако теперь стало понятно, что чекер не работает как надо и его надо чинить