#android #kotlin
#Android #kotlin
Вопрос:
Я пытаюсь выполнить HTTP-запрос с помощью библиотеки Fuel в Android kotlin, и я хочу запросить синхронно. Но я не могу получить данные с помощью приведенного ниже кода. Кто-нибудь знает почему? или в библиотеке Fuel нет функции синхронизации?
val hoge = "https://xxxxx.com/id/1".httpGet().response()
println(String(hoge.third.component1()))
Комментарии:
1. ryanharrison.co.uk/2018/06/15/make-http-requests-kotlin.html
2. Вы получаете какие-либо ошибки? Android должен блокировать любой сетевой запрос, запущенный в основном потоке
Ответ №1:
Fuel может выполнять запрос синхронизированным образом. Ваш код в полном порядке, и он работает для меня. Убедитесь, что ваш сервер работает нормально, и, если вы используете Android, что вы добавили необходимые разрешения для AndroidManifest.xml
.
<uses-permission android:name="android.permission.INTERNET" />
Помимо этого, ваш код может быть улучшен. Обратите внимание, что response()
метод Request
класса доставит вас ByteArray
. Если вам нужна строка, вы должны использовать:
"https://xxxxx.com/id/1".httpGet().responseString()
println(hoge.third.component1())
Новейшая версия библиотеки Fuel позволяет вам делать это еще лучше, используя сопрограммы kotlin. Вы можете пометить свою функцию как приостановленную и вызвать awaitString()
. Поток будет заблокирован до тех пор, пока вы не получите ответ.
"https://xxxxx.com/id/1".httpGet().awaitString()
println(hoge)