问题标签 [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.
kotlin - 在 Ktor 中,如何将 InputStream 流式传输到 HttpClient 请求的正文中?
我正在使用Ktor 1.2.2,并且我有一个 InputStream 对象,我想将其用作我提出的 HttpClient 请求的主体。在 Ktor 0.95 之前,这个InputStreamContent对象似乎就是这样做的,但它已在 1.0.0 版本中从 Ktor 中删除(不幸的是无法弄清楚原因)。
我可以使用 ByteArrayContent 使其工作(参见下面的代码),但我宁愿找到一个不需要将整个 InputStream 加载到内存中的解决方案......
这段代码是一个简单的测试用例,模拟了我想要实现的目标:
如果我错过了任何相关信息,请告诉我,
谢谢!
kotlin - 在 Ktor 客户端中编码 URL
我需要使用 Ktor 客户端发出 GET 请求。我正在使用的 URL 作为字符串从我无法控制的来源传递给我。URL 字符串包含由 Ktor 客户端编码的逗号,%2C
这会破坏后端逻辑。有没有办法阻止 Ktor 对 URL 进行编码?
举例说明:
在下面的代码中,值为url
ishttps://my.domain/someData,someMoreData
但传出请求 URL 为https://my.domain/someData%2CsomeMoreData
。
android - 如何在 Ktor 中设置类似于 Retrofit 的`Retrofit.Builder().baseUrl(baseUrl) 的 basePath?
我正在尝试Ktor
转换一些当前正在使用的现有项目Retrofit
。
虽然我可以很容易地将请求转换为:
$BASE_URL
每次总是添加到所有路径似乎非常乏味。在改造中,我们可以简单地执行以下操作:
我已经尝试过使用defaultRequest
和设置BASE_URL
那里,但显然你只能设置url.host
而不是整个basePath
.
有没有办法做同样的事情Ktor
?或者如果没有,处理这个问题的最佳做法是什么?
ktor - 如何连接到 ktor 服务器上的外部 api
我有一个 ktor 服务器,它向我的 android 客户端公开一个 API。它有自己的数据库、一些注册结构和所有标准的东西。但是现在,我的数据库的一部分正在填充来自 3rd 方数据库的数据,我只能通过它自己的 API 访问这些数据。这意味着我的服务器本身就是一个客户端。我知道这可能不是最好的结构,但现在就是这样。所以我认为我的服务器需要一个 HTTPClient。为此,我需要使用一个引擎,但我应该使用与我用于服务器的引擎相同的引擎吗?如何在我的 DI Koin 中设置它,以便我的服务可以访问 HTTPClient(工厂或单一)现在我像这样设置服务器部分:
应用程序.conf
我应该更改我的 main()、丢失 application.conf 并手动编写代码以便使用相同的引擎吗?
httpclient - Ktor 服务器应用程序不断增加开放连接
嗨,我最近在服务器上部署了 ktor 服务器项目作为我的应用程序使用的 rest api 后端。我正在使用 netty 并在具有系统服务的服务器上运行它。Ktor 服务器在端口 7171 上运行,每当我检查与端口 7171 的连接时,它都会不断增加。我正在检查这个命令
经过一天的连接数 20k+ 和服务器崩溃后,没有任何工作。
我认为一些连接保持开放。在日志中我没有收到任何错误,除了像connection reset by peer
.
我还将 HttpClient 与 Apache 一起使用,并用于缓存数据列表,我将数据存储在伴随对象中,因此不会每次都从数据库中获取它。
我查看了代码,对以上两件事只有怀疑。
这些是我的 gradle 依赖项
目前我有大约 7k 用户,最大并发用户为 450。请指导我如何检查问题并找出问题。
这是 HttClient 代码:
kotlin - 在 ktor HTTPClient 中解析错误正文
我有一个 api,它在发送错误请求时返回带有正确错误信息的错误正文。例如,我得到状态码 400 和以下正文 -
现在,当我为此在多平台模块中编写 ktor 客户端时,我会在响应验证器中捕获它,例如 -
我在这里的查询是我无法访问validateResponse
或中的响应错误正文handleResponseException
。有没有办法我可以捕获并解析它以获取服务器发送的实际错误?
kotlin - 使用 ktor 检查多部分请求正文中是否存在所有参数
我正在尝试使用 ktor 创建一个多部分请求,其代码如下,
上面的代码或rest api工作正常,但问题是,我想检查所有参数是否可用,即我想发送附加参数以及格式如下的文件,
我在这里举一个例子,我想要什么
在这里,无论参数是什么,我们传递的都会自动转换成 pojo 类,如果我们没有传递它,它会抛出异常,
所以,我想用多部分实现类似的事情。
ktor - 无法在 kotlin js 中使用 ktor 客户端发布请求
我正在尝试发出 http post 请求,但由于无法理解的原因而失败。
BlockquoteIllegalStateException {message_8yp7un$_0:“发送正文失败。内容具有类型:OwnerMapper 类,但应为 OutgoingContent。”,cause_th0jdv$_0:空,堆栈:“captureStack↵Exception↵RuntimeException↵IllegalSta…↵↵↵↵↵↵↵↵ ↵↵↵↵↵↵↵↵↵promiseReactionJob@[本机代码]”,名称:“IllegalStateException”}
添加序列化插件后,出现此错误:
“找不到类 OwnerMapper 的无参数序列化程序。对于泛型类,例如列表,请明确提供序列化程序。”
我遵循了官方示例,但无法使其运行。我正在使用 Kotlin/Js,以上错误来自浏览器。
kotlin - 如何覆盖 logRequest/logResponse 以在 Ktor 客户端日志记录中记录自定义消息?
目前,ktor 客户端日志记录实现如下,它按预期工作,但不是我想要的。
上面在查看日志时会产生一场噩梦,因为它正在记录每一行。由于我是 Kotlin 和 Ktor 的初学者,我很想知道如何改变这种行为。由于在 Kotlin 中,除非特别打开,否则所有类都是最终类,我不知道如何修改logRequest
函数行为。我理想地想要实现的是下面的例子。
任何帮助将不胜感激