Kotlin 使用Ktor客户端使用图像发布请求

Kotlin 使用Ktor客户端使用图像发布请求,kotlin,ktor,Kotlin,Ktor,我在发送http请求时遇到问题,该请求的正文中有一个文件作为参数之一。API返回的响应不是我所期望的,因此我认为代码有问题 suspend fun post(url: String, bodyParameters: MutableMap<String, Any>, headerParameters: MutableMap<String, String>? = null): HttpResponse?{ val client = HttpClien

我在发送http请求时遇到问题,该请求的正文中有一个文件作为参数之一。API返回的响应不是我所期望的,因此我认为代码有问题

suspend fun post(url: String, bodyParameters: MutableMap<String, Any>, headerParameters:
    MutableMap<String, String>? = null): HttpResponse?{

        val client = HttpClient()

        try {
            val call = client.call(url) {
                method = HttpMethod.Post
                body = MultiPartFormDataContent(
                    formData {
                        bodyParameters.forEach{(key, value) ->
                            when(value) {
                                is String -> {
                                    append(key, value)
                                }

                                is File -> {
                                    append(key, value.inputStream().asInput())
                                }
                            }
                        }
                    }
                )
            }
            if(call.response.status.value == 500) {
                return null
            }
            return call.response

suspend-fun-post(url:String,bodyParameters:MutableMap,headerParameters:
可变映射?=null):HttpResponse{
val client=HttpClient()
试一试{
val call=client.call(url){
方法=HttpMethod.Post
body=MultiPartFormDataContent(
formData{
bodyParameters.forEach{(键,值)->
何时(值){
是字符串->{
附加(键、值)
}
是文件->{
追加(键,value.inputStream().asInput())
}
}
}
}
)
}
if(call.response.status.value==500){
返回空
}
回电
返回的响应状态是在没有发送文件时所期望的状态。您知道为什么这不起作用吗?
使用Ktor还有其他方法吗?

在图像案例中,您得到了什么响应?Alexander Egger-我从服务器得到的响应状态为401,这是未插入文件时的预期状态。但是,当我在Postman上测试它时,它还返回了一个响应json,我在使用call.response.rea时无法读取dText()。如果我使用没有参数的client.post(url)方法,我可以访问该响应json。我不知道发生了什么。也许你必须将“Accept”头设置为“application/json”这不是很不幸。感谢您的帮助。您能安装
日志记录功能并提供一些日志吗?可能是因为文件中的部件类型应该是
FileItem
,而不仅仅是
BinaryItem