问题标签 [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 投票
0 回答
39 浏览

kotlin-multiplatform - Ktor HttpClient 在多平台中处理关闭

根据文档,我们应该在完成 http 客户端实例后调用 close 方法。在多平台环境中处理ktor http客户端关闭方法的正确方法是什么。? 就我而言,我有一个带有 android 和 ios 的 KMM 项目。我在公共源集中使用 HttpClient。

或者关闭方法应该由特定的应用程序而不是多平台库来处理?

0 投票
1 回答
44 浏览

kotlin - Ktor 客户端——不记名令牌从未刷新

我正在尝试使用 Ktor 处理不记名令牌的身份验证,但是在访问令牌失效后refreshTokens { ... }永远不会触发。这是我的服务:

Ktor 日志:

我发现了各种帖子,上面写着如果服务器响应代码 401 和 www-authenticate 标头,Ktor 会发现令牌需要刷新并自动执行。但是,从不触发 refreshTokens 块。

有人知道为什么会这样吗?我会很感激任何帮助:)

0 投票
1 回答
53 浏览

android - 如何防止 Ktor Client 对 url 参数进行编码?

我正在尝试使用 kotlin 创建一个 android 应用程序,该应用程序需要有一个迷你下载管理器,因为我需要下载 100MB 到 8GB 的​​文件,当服务器支持暂停时,用户可以暂停并稍后恢复下载,搜索我发现Ktor 库并阅读文档以及 youtube 上的一些视频,我设法编写了一个基本代码,我可以在其中下载文件并停止下载并继续正常进行,当我的一个测试出现错误时,有文件的 url模式是:http://server.com/files?file=/10/55/file.zip

问题是我放了这个链接,但是 Ktor 转换成http://server.com/files?file=%2F10%2F55%2Ffile.zip这个会在服务器上生成一个错误响应,因为我无权访问服务器来更改这个规则我需要发送正确的 url 而不编码。有谁知道如何做到这一点?防止 Ktor 在 url 参数中做一个,我在文档URL_encode中找不到任何东西

我的代码是这样的:

ktor 客户端版本 1.6.7

谁能帮我用ktor解决这个问题,如果没有解决方案,有人可以告诉我实现相同目标的另一种方法吗?需要使用 Kotlin。

更新 2022-02-17

感谢 Aleksei Tirman 的帮助,我设法解决了这个问题,非常感谢。基本代码如下所示:

0 投票
1 回答
26 浏览

spring-boot - 无法将 Ktor 客户端添加到 Spring Boot Maven 项目

所以我试图将 Ktor Client 添加到我的 Spring Boot Maven 项目中,但 IntelliJ 没有检测到依赖项。已经尝试重新导入 maven 依赖项、清理缓存、mvn idea:idea 以及在另一台机器上创建另一个 Spring Boot Maven 项目,但仍然无法正常工作。

这是我的 pom.xml

这就是我在 IntelliJ 中得到的:

智能结果

0 投票
1 回答
28 浏览

android - 使用wifi时Ktor客户端websocket连接超时

我正在使用 Ktor Client 在 Android 应用程序中建立 websocket 连接。使用移动数据时,连接在模拟器甚至智能手机上都可以正常工作。使用wifi时开始出现问题。在智能手机上启用 wifi 后,通过 Ktor 客户端的正常 HTTP 请求继续工作,但 websocket 连接失败并出现超时异常:

请求 wss://xxx 失败并出现异常:io.ktor.network.sockets.ConnectTimeoutException:连接超时已过期 [url=wss://xxx, connect_timeout=unknown ms]

我的代码如下:

我的清单包含互联网权限:

该问题已在多个 wifi 网络中的多个设备上进行了测试。所有组件的 Ktor 客户端版本为 1.6.7。

我真的不知道为什么 websocket 只在 wifi 上失败。期待更懂的人。

提前致谢!

0 投票
0 回答
9 浏览

android - 我们是否可以嵌入两个数据类,它们从不同路径的 api 获取数据,并使用 KMM 中的 SQLDelight 将其保存在一个表中

我正在开发一个项目,该项目使用 ktor-client 从 api 获取数据并使用 SQLDelight 将它们保存在数据库中。我的问题是我获取的数据来自api中的两个不同的路由,我知道如何将它们保存在数据库中的不同表中,但我想知道是否有办法将这些数据从两个数据类合并到一个并将它们保存到数据库中,我需要合并的是名字,姓氏,profilePicture,createdDate,状态。

我希望这是可以理解的,我将不胜感激以任何方式提供帮助。

)

)