OkHttp 4.x дает ошибку при попытке доступа к URL через запрос вызова - PullRequest
0 голосов
/ 15 февраля 2020

Я недавно начал обновление до okhttp3 до 4.x

При этом я получаю следующую ошибку времени сборки:

Using 'url(): HttpUrl' is an error. moved to val

Проблема возникает, когда Я пытаюсь получить URL из объекта запроса, полученного с помощью вызова:

например,

   call.enque(callback : Callback){
     override fun onFailure(call : Call, t:Throwable) {
       val url = call.request().url().toString
     }
   }

Я посмотрел дальше, и объект Url в Request теперь является окончательным.

Кроме того, в руководстве по обновлению нет указаний https://square.github.io/okhttp/upgrading_to_okhttp_4/

Буду признателен за любые предложения о том, как получить URL-адрес.

1 Ответ

1 голос
/ 15 февраля 2020
Using 'url(): HttpUrl' is an error. moved to val

Это означает, что вы должны изменить вызов функции url() на доступ к свойству url.

okhttp 4 поставляется с параметром replaceWith в аннотации устаревания, что например, Android Studio предлагает исправить это автоматически, щелкнув правой кнопкой мыши / Alt-Enter на ошибку:

@Deprecated(
  message = "moved to val",
  replaceWith = ReplaceWith(expression = "url"),
  level = DeprecationLevel.ERROR)

Из комментариев:

После дальнейшего расследования я узнал что запрос () или объект запроса взят из Retrofit 2. И Retrofit 2 возвращает объект вызова из okhttp3

Это проблема с Android Studio. Вы можете обойти это с явным приведением к типу ohttp 4, например (call.request() as Request).url.

...