Size: a a a

2019 May 07

AO

Alexey Otts in Kotlin JVM
Вафель
Могу ли я сделать в кторе запрос (client.post{})

И с телом (body = SomeClass(...)) и с multipart/form-data (body = formData {}?)?
Не очень понятен вопрос, в один запрос и то и то?
источник

В

Вафель in Kotlin JVM
Alexey Otts
Не очень понятен вопрос, в один запрос и то и то?
Да. это вообще возможно? (с точки зрени протокола)
источник

AO

Alexey Otts in Kotlin JVM
Вафель
Да. это вообще возможно? (с точки зрени протокола)
Нет
источник

VP

Vladimir Petrakovich in Kotlin JVM
Вафель
Да. это вообще возможно? (с точки зрени протокола)
Лол, нет. У запроса одно тело)
Но в multipart можно засунуть всё что захотите
источник

В

Вафель in Kotlin JVM
Пх. Ясно спасибо.
источник

В

Вафель in Kotlin JVM
Собственно задача такая: есть класс — payload с параметрами запроса. Для обычных запросов я просто делаю body = Payload(...) (спасибо JsonFeature). А для запросов с файлами надо работать с multipart. Со-но хочется без рефлексии и костылей разобрать класс по полям и добавить их...
источник

AO

Alexey Otts in Kotlin JVM
Вафель
Собственно задача такая: есть класс — payload с параметрами запроса. Для обычных запросов я просто делаю body = Payload(...) (спасибо JsonFeature). А для запросов с файлами надо работать с multipart. Со-но хочется без рефлексии и костылей разобрать класс по полям и добавить их...
Так говорите, как будто сейчас в json сериализуете без костылей и рефлексии
источник

В

Вафель in Kotlin JVM
Alexey Otts
Так говорите, как будто сейчас в json сериализуете без костылей и рефлексии
Ну, по крайней мере это скрыто от меня 🤷‍♂️
источник

AM

Andrew Mikhaylov in Kotlin JVM
Вафель
Собственно задача такая: есть класс — payload с параметрами запроса. Для обычных запросов я просто делаю body = Payload(...) (спасибо JsonFeature). А для запросов с файлами надо работать с multipart. Со-но хочется без рефлексии и костылей разобрать класс по полям и добавить их...
Ну вот и кладите в мультипарт одним из партов application/json.
источник

В

Вафель in Kotlin JVM
Andrew Mikhaylov
Ну вот и кладите в мультипарт одним из партов application/json.
Надо попробовать, но не думаю что апи такое примет. (опять же какой ключь нужен? 🤔)

вот что в доке написанно:
We support GET and POST HTTP methods. We support four ways of passing parameters in Bot API requests:
- URL query string
- application/x-www-form-urlencoded
- application/json (except for uploading files)
- multipart/form-data (use to upload files)
источник

В

Вафель in Kotlin JVM
И ещё дальше вопрос по ктору — почему pipeline сделан так не безопасно? У меня постоянно вылезают ошибки вроде class cast exception ArrayList to HttpCalljava.lang.ClassCastException: java.util.ArrayList cannot be cast to io.ktor.client.call.HttpClientCall и как это отлаживать совершенно не понятно...
источник

В

Вафель in Kotlin JVM
И кто-нибудь знает, куда в ktor 1.20-rc подевался KotlinxSerializer? после обновления версии идея жалуется на unresolved reference...
источник

AM

Andrew Mikhaylov in Kotlin JVM
Вафель
Надо попробовать, но не думаю что апи такое примет. (опять же какой ключь нужен? 🤔)

вот что в доке написанно:
We support GET and POST HTTP methods. We support four ways of passing parameters in Bot API requests:
- URL query string
- application/x-www-form-urlencoded
- application/json (except for uploading files)
- multipart/form-data (use to upload files)
А, дык вы к готовому серверу клиент делаете? Ну так проверьте документацию конкретно о том, как мультипарт им слать.
источник

В

Вафель in Kotlin JVM
Andrew Mikhaylov
А, дык вы к готовому серверу клиент делаете? Ну так проверьте документацию конкретно о том, как мультипарт им слать.
Дак это всё что есть в документации на этот счёт...

Вообще там всё работает если параметры тоже просто в multipart запихать, 'проблема' только в том, чтобы сделать код лаконичным.
источник

AE

Alexandr Emelyanov in Kotlin JVM
Вафель
Дак это всё что есть в документации на этот счёт...

Вообще там всё работает если параметры тоже просто в multipart запихать, 'проблема' только в том, чтобы сделать код лаконичным.
Лаконичным код быть не обязан, а вот рабочим-да
источник

AM

Andrew Mikhaylov in Kotlin JVM
Вафель
Дак это всё что есть в документации на этот счёт...

Вообще там всё работает если параметры тоже просто в multipart запихать, 'проблема' только в том, чтобы сделать код лаконичным.
Я в целом тоже не в восторге от того, как там мультипарты сделаны, но есть ощущение, что ещё доведут до ума -- слишком сумбурненько выглядит.
источник

AM

Andrew Mikhaylov in Kotlin JVM
Ну и да, если этот код приходится писать больше одного раза -- смело прячьте за функцией :)
источник

nt

nikita tukkel in Kotlin JVM
Всем привет. Гляньте плиз вопрос: https://stackoverflow.com/questions/55973493
источник
2019 May 08

АО

Алексей Овсянников in Kotlin JVM
Вафель
И ещё дальше вопрос по ктору — почему pipeline сделан так не безопасно? У меня постоянно вылезают ошибки вроде class cast exception ArrayList to HttpCalljava.lang.ClassCastException: java.util.ArrayList cannot be cast to io.ktor.client.call.HttpClientCall и как это отлаживать совершенно не понятно...
Ну, скорее всего, проблема в какой-то магии автопрмведения типов. А тут есть один простой совет - если не понимаете, как работает - не используйте:)
источник

АО

Алексей Овсянников in Kotlin JVM
Я по этой причине не использую клиентское приведение типов для call
источник