Size: a a a

2020 April 29

i

i_vovolk in KotlinLangRu
Quantum Harmonizer
а гзип-то валидный отдаёт?)
валидный,  нормальный ответ приходт, тот же http client из idea нормально его понимает
источник

i

i_vovolk in KotlinLangRu
Bogdan Panchenko
А при получении указываешь ContentType.Application.GZip (на всякий случай спрашиваю)
похоже на причину, куда и как воткнуть это?
источник

BP

Bogdan Panchenko in KotlinLangRu
i_vovolk
похоже на причину, куда и как воткнуть это?
В запросе есть параметер content
источник

BP

Bogdan Panchenko in KotlinLangRu
post/get etc
источник

i

i_vovolk in KotlinLangRu
чот не помогло.
есть вот такая фича в клиентах https://github.com/ktorio/ktor/tree/master/ktor-client/ktor-client-features/ktor-client-encoding
есть закрытый баг с примером кода
https://github.com/ktorio/ktor/issues/1189
 install(ContentEncoding) {
               gzip()
               identity()
           }

или вот такой пример
 HttpClient(Apache) {
       ContentEncoding {
           gzip()
       }

но нифига не работает, нигде не указано, какие артифакты нужны и т.п.
источник

BP

Bogdan Panchenko in KotlinLangRu
i_vovolk
чот не помогло.
есть вот такая фича в клиентах https://github.com/ktorio/ktor/tree/master/ktor-client/ktor-client-features/ktor-client-encoding
есть закрытый баг с примером кода
https://github.com/ktorio/ktor/issues/1189
 install(ContentEncoding) {
               gzip()
               identity()
           }

или вот такой пример
 HttpClient(Apache) {
       ContentEncoding {
           gzip()
       }

но нифига не работает, нигде не указано, какие артифакты нужны и т.п.
У тебя CIO а не Apache
источник

i

i_vovolk in KotlinLangRu
я уже все перепробовал
источник

BP

Bogdan Panchenko in KotlinLangRu
i_vovolk
я уже все перепробовал
Странно зависимость добавил. В коасппсе есть а идея не видит. Но компилится
источник

BP

Bogdan Panchenko in KotlinLangRu
io.ktor:ktor-client-encoding:1.3.1
источник

BP

Bogdan Panchenko in KotlinLangRu
Bogdan Panchenko
Странно зависимость добавил. В коасппсе есть а идея не видит. Но компилится
Хотя может он импорт выбрасывает
источник

i

i_vovolk in KotlinLangRu
вот и я на этом споткнулся, нужно добавить
implementation "io.ktor:ktor-client-encoding-jvm:$ktor_version"
и тогда фича декомпрессии установится. Нашел в слаке котлина.
источник

i

i_vovolk in KotlinLangRu
Но теперь другая проблема
источник

i

i_vovolk in KotlinLangRu
 install(ContentEncoding) {
           gzip()
           deflate()
           identity()
       }

заработало и с Apache и с CIO
источник

i

i_vovolk in KotlinLangRu
В общем, убил полдня, итог такой. Чтобы HttpClient мог получать gzip нужно добавить
implementation "io.ktor:ktor-client-encoding-jvm:$ktor_version"

Но.  Если вы настроите клиент вот так:
install(ContentEncoding) {
           gzip()
       }

       install(Logging) {
           logger = Logger.DEFAULT
           level = LogLevel.ALL
       }

То будете получать  
failed with exception: kotlinx.coroutines.JobCancellationException: Parent job is Completed;

Декомпресиия и логи отчего-то вместе не работают. Без логов всё ништяк.
источник

QH

Quantum Harmonizer in KotlinLangRu
i_vovolk
В общем, убил полдня, итог такой. Чтобы HttpClient мог получать gzip нужно добавить
implementation "io.ktor:ktor-client-encoding-jvm:$ktor_version"

Но.  Если вы настроите клиент вот так:
install(ContentEncoding) {
           gzip()
       }

       install(Logging) {
           logger = Logger.DEFAULT
           level = LogLevel.ALL
       }

То будете получать  
failed with exception: kotlinx.coroutines.JobCancellationException: Parent job is Completed;

Декомпресиия и логи отчего-то вместе не работают. Без логов всё ништяк.
> нужно добавить implementation
хмм, а как-то зарегистрировать модуль надо?
источник

i

i_vovolk in KotlinLangRu
нет, ничего больше не надо.  Там главное encoding-jvm, а не encoding в build.gradle добавить
источник

QH

Quantum Harmonizer in KotlinLangRu
i_vovolk
нет, ничего больше не надо.  Там главное encoding-jvm, а не encoding в build.gradle добавить
то есть если ты уберёшь implementation из build.gradle, то код скомпилируется, а работать будет иначе?
источник

i

i_vovolk in KotlinLangRu
Мы, видимо, не поняли друг друга)  Помимо implementation в настройку клиента нужно добавить
install(ContentEncoding) {
  gzip()
}

И тогда декомпрессия заработает. Главное, не добавлять (сейчас, по крайней мере) логирование вместе с этим.
private val httpClient = HttpClient(CIO) {
       install(ContentEncoding) {
           gzip()
       }
       install(JsonFeature) {
           serializer = GsonSerializer()
       }
   }

Вот так у меня все заработало
источник

QH

Quantum Harmonizer in KotlinLangRu
i_vovolk
чот не помогло.
есть вот такая фича в клиентах https://github.com/ktorio/ktor/tree/master/ktor-client/ktor-client-features/ktor-client-encoding
есть закрытый баг с примером кода
https://github.com/ktorio/ktor/issues/1189
 install(ContentEncoding) {
               gzip()
               identity()
           }

или вот такой пример
 HttpClient(Apache) {
       ContentEncoding {
           gzip()
       }

но нифига не работает, нигде не указано, какие артифакты нужны и т.п.
так gzip() же и без этого implementation можно добавить?
источник

i

i_vovolk in KotlinLangRu
нет
источник