Без полного минимального кода, необходимого для репликации проблемы, и без информации о том, что представляет собой конкретная ошибка (например, трассировка стека), я просто предполагаю, что подпрограммы setURL / checkURL не совсем выполняют то, что вы хотите. Похоже, они предполагают, что openStream сгенерирует исключение, если ключ в URL неверен, но это не так. Даже если путь или ключ в URL неверны, HTTP-сервер все равно предоставит ответ. Ответ может не соответствовать 200 OK, и тело ответа может не включать в себя то, что вы ищете, но оно все равно даст ответ, и открытый поток может быть использован для чтения ответа.
Итак, если я правильно понимаю, вы действительно хотите проверить содержимое ответа (включая, возможно, код состояния HTTP), прежде чем решить, является ли "успех" истинным или ложным.
Тейн опубликовал код, который я передал ему в Как мне обрабатывать тайм-ауты сервера и ответы с кодами ошибок на сообщение http в Android App? . Я рекомендую просмотреть его и посмотреть, обеспечивает ли он структуру, необходимую для обработки успешных и неудачных ответов.
Имеет смысл?