Напишу псевдокодом:
пусть значение = получить_значение_из_поля();
пусть результат = запросить(значение);
Вообще, порождать новые потоки на каждый запрос - это не очень. Лучше использовать асинхронщину. Хз что там в жаве для этого есть, если честно.
Для парсинга ответа есть GSON.
Если бы вы использовали kotlin, то я бы посоветовал использовать ktor или http4k