问题标签 [ktor-client]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
478 浏览

ios - 在 Ktor 中为 iOS Http 客户端刷新身份验证令牌

我有一个 KMM 项目,其中我一直在使用 Ktor 进行 API 调用。我有一个要求,如果它们已过期,我需要在刷新令牌的帮助下更新我的访问令牌。基本上我只需要在我的 Ktor 客户端中添加一个身份验证模块。不,我已经浏览了所有Ktor 文档Auth并在我的 KMM 中添加了模块。

现在,当我在我的 http 客户端中添加身份验证模块时,它会成功添加,并且每当我UnAuthorized从任何 API 收到用户错误时,它都会调用我的刷新令牌 API。问题是即使它调用了我的刷新令牌 API,但在刷新令牌成功时,它不会调用我收到UnAuthorized用户错误的其他 API。

它在 Android 中按预期工作,但唯一的问题是在 iOS 客户端中。

预期(在 Android Http 客户端中工作正常):-

  • 调用任何 API -> 如果收到任何UnAuthorized用户错误调用刷新令牌 API -> 刷新令牌 API 的 onSuccess -> 使用更新的刷新令牌再次调用第一个 API。

我面临的问题:-

  • 调用任何 API -> 如果收到任何UnAuthorized用户错误,则调用刷新令牌 API -> onSuccess of refresh token API -> 在此步骤中什么也不做,只会从第一个 API 引发未经授权的用户错误。

HttpClient对于 iOS:-

Android客户端(几乎相同):-

Ktor 版本:- 1.6.2(在阅读此问题后也尝试了 1.6.4,但没有成功)

0 投票
0 回答
197 浏览

android - KTOR 文件上传示例有什么问题?

这是本页示例中的代码。

当我将此代码粘贴到 Android Studio 中时,出现以下错误。

奇怪的是官方示例代码会这样失败,所以我做错了什么吗?我需要做什么来纠正这个问题?

附加信息...

如果我删除它会编译的“formData”元素之一,但我猜它不会做我认为它应该做的事情,因为它没有设置属性。

0 投票
1 回答
143 浏览

android - 如何在 Ktor-client for Android 中清除不记名令牌

我正在使用适用于 Android 的 Ktor 客户端和插件:io.ktor:ktor-client-auth:1.6.4. 当前的实现类似于此代码段

现在我想在单击按钮后删除标记时实现“注销”功能,问题是......如何?

0 投票
3 回答
394 浏览

kotlin - 未找到“响应”类的 Ktor 序列化程序

插件和依赖:

Application文件:

UserRouter

User

Response

日志:

任何帮助,将不胜感激。

0 投票
1 回答
36 浏览

android - 删除 [ ] 包装 json 响应

我已经在我的 Android 应用程序上设置了一个 Ktor 客户端,并且我正在向某些 API 发出获取请求。我受到了欢迎:

I/System.out:错误:对象“{”的预期开始,但改为“EOF”

我发现了这个SO question,这基本上让我认为我必须删除响应周围的 [] ......

  1. 我不知道这是否是我应该做的
  2. 假设这是正确的道路,我不知道我将如何从 android 端执行此操作

响应如下所示:

0 投票
1 回答
85 浏览

android - 使用带有连字符的@SerializedName 不起作用

我正在尝试将此 JSON 响应反序列化为一个对象,并且我的一个键上有一个连字符。不幸的是,Kotlin 不支持变量名中的连字符,这就是我使用 @SerializedName() 的原因,但它现在仍然有效。关于为什么的任何线索?

JSON 响应

我的对象:

错误:

I/System.out:错误:偏移 120 处的意外 JSON 令牌:遇到未知键“模板类型”。在“Json {}”构建器中使用“ignoreUnknownKeys = true”来忽略未知键。JSON输入:.....“名称”:“Nissan PathFinder”,“模板类型”:“”,“模板_.....

我不想忽略未知密钥,因为我确实需要它。

0 投票
3 回答
50 浏览

android - 反序列化 JSON 中的字符串

我收到具有以下结构的 JSON 响应:

所以基本上我有一个对象列表(这个包含 dateCreated、comments 和 url_list)我的问题是 url_list 是一个保存为字符串的对象列表,我不知道如何将该字符串反序列化为一个对象。

1)这可能吗?2)怎么做?

我正在使用 Ktor 客户端和 kotlinx 序列化。

0 投票
1 回答
38 浏览

android - Ktor 是否提供任何内置数据库

我对Ktor非常陌生。我很困惑Ktor 是否提供了任何内置数据库和任何界面,我们可以在其中实际以表格形式(如 MySQL)或 Firebase 数据库(以收集文档形式)查看我们的数据。

我想构建一个需要数据库的 Android 应用程序。

作为一个 API,我正在尝试使用 Ktor。我看过一些教程以了解它的基础知识,它们都使用变量来存储所有数据,然后引用它们。

例如 -

如果没有 Ktor 支持的最佳数据库,请告诉我是否有内置数据库。

0 投票
0 回答
44 浏览

ktor - 响应标头中的错误编码

我在 android 上使用 ktor (1.6.7) 作为客户端,我试图从响应头字段 HttpHeaders.ContentDisposition 中提取文件名。文件名包含变音符号。文件名由 webbrowsers (safari / chrome)、postman 和 ios (alamofire) 完美提取,但 ktor 似乎使用了错误的编码。

发送的标头是 Content-Disposition: attachment; filename="2022-01-06_TÜ-FL.pdf"

从 Ktor 我得到 Content-Disposition: attachment; filename="2022-01-06_TܭFL.pdf"

httpResponse.headers.get(HttpHeaders.ContentDisposition)用来获得Content-Disposition领域。

0 投票
1 回答
83 浏览

kotlin - 如何通过 Flow 观察 Ktor 下载进度

我想通过一个Flow来观察下载进度,所以写了一个这样的函数:

onDownload只会调用一次,并且不会下载文件。如果我删除 emit(progress)它会起作用。

io.ktor:ktor-client-android:1.6.7