http-запрос с топливом

#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)