Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin 如何使用数据类制作post_Kotlin_Request_Http Post - Fatal编程技术网

Kotlin 如何使用数据类制作post

Kotlin 如何使用数据类制作post,kotlin,request,http-post,Kotlin,Request,Http Post,我有一个具有此结构的端点: uri = http://127.0.0.1:9090/tables/mask 这个有效载荷: { "_id" : "5d66c9b6d5ccf30bd5b6b541", "connectionId" : "1967c072-b5cf-4e9e-1c92-c2b49eb771c4", "name" : "Customer", "columns" : [ { "name" : "FirstName",

我有一个具有此结构的端点:

uri = http://127.0.0.1:9090/tables/mask
这个有效载荷:

{
   "_id" : "5d66c9b6d5ccf30bd5b6b541",
   "connectionId" : "1967c072-b5cf-4e9e-1c92-c2b49eb771c4",
   "name" : "Customer",
   "columns" : [
       {
           "name" : "FirstName",
           "mask" : true
       },
       {
           "name" : "LastName",
           "mask" : false
       },
       {
           "name" : "City",
           "mask" : false
       },
       {
           "name" : "Phone",
           "mask" : false
       }
   ],
   "parentId" : null
} 
在我的Kotlin代码中,我需要反序列化以下结构:

data class ColumnsMaskModel (val name:String, val mask:Boolean )

data class TablesMaskModel (val _id:String, val name:String, val connectionId:String, val columns:MutableList<ColumnsMaskModel?> )
数据类ColumnsMaskModel(val名称:字符串,val掩码:布尔值)
数据类tableMaskModel(val _id:String,val name:String,val connectionId:String,val columns:MutableList)

我如何使用
tablemaskmodel
在Kotlin中创建HTTP post

您需要一个HTTP客户机来实现这一点。数据类本身与HTTP无关,它们只是数据结构。Kotlin for JVM上有很多HTTP客户端:

  • Java 9的
让我们看看如何在Ktor中发出HTTP请求:

data class ColumnsMaskModel(val name: String, val mask: Boolean)

data class TablesMaskModel(val _id: String, val name: String, val connectionId: String, val columns: MutableList<ColumnsMaskModel?>)

fun main() = runBlocking {
    val client = HttpClient {
        install(JsonFeature) {
            serializer = JacksonSerializer()
        }
    }

    val result = client.post<String> {
        url("http://httpbin.org/post")
        contentType(ContentType.Application.Json)
        body = TablesMaskModel(
            _id = "5d66c9b6d5ccf30bd5b6b541",
            connectionId = "1967c072-b5cf-4e9e-1c92-c2b49eb771c4",
            name = "Customer",
            columns = mutableListOf(
                ColumnsMaskModel(name = "FirstName", mask = true),
                ColumnsMaskModel(name = "LastName", mask = false),
                ColumnsMaskModel(name = "City", mask = false),
                ColumnsMaskModel(name = "Phone", mask = false)
            )
        )
    }

    println(result)

    client.close()
}
数据类ColumnsMaskModel(val名称:字符串,val掩码:布尔值)
数据类tableMaskModel(val _id:String,val name:String,val connectionId:String,val columns:MutableList)
fun main()=运行阻塞{
val client=HttpClient{
安装(JsonFeature){
序列化程序=JacksonSerializer()
}
}
val result=client.post{
网址(“http://httpbin.org/post")
contentType(contentType.Application.Json)
body=表maskmodel(
_id=“5d66c9b6d5ccf30bd5b6b541”,
connectionId=“1967c072-b5cf-4e9e-1c92-c2b49eb771c4”,
name=“客户”,
columns=mutableListOf(
ColumnsMaskModel(name=“FirstName”,mask=true),
ColumnsMaskModel(name=“LastName”,mask=false),
ColumnsMaskModel(name=“City”,mask=false),
ColumnsMaskModel(name=“Phone”,mask=false)
)
)
}
println(结果)
client.close()
}
注意,Ktor对HTTP请求使用挂起函数,因此在本例中需要一个协同路由作用域,
runBlocking

Ktor支持HTTP客户端的各种“后端”——Apache、协同路由IO、curl。它还具有不同的“功能”来启用飞行有效载荷序列化和反序列化,如上面的示例所示