android - 在 kotlin 的 api 中发送不同类型的 post 参数

标签 android post kotlin

我尝试在 api 中发送不同类型的 post 参数,但它没有正常工作。知道为什么吗?

这是我的代码。

首先,我将参数包装在一个简单的容器中,并将其作为参数传递给 AsyncTask,如下所示:

class MyParams {
    var paramName: String = ""
    var paramaddress: String = ""
    var paramlatitude: Float = 0.toFloat()
    var paramlongitude: Float = 0.toFloat()

    constructor(funName: String, funAddress: String, funLatitude: Float, funLongitude: Float) {
        this.paramName = funName
        this.paramaddress = funAddress
        this.paramlatitude = funLatitude
        this.paramlongitude = funLongitude
    }
}

class myClass : AsyncTask<MyParams, Void, String>() {

    override fun onPreExecute() {
        super.onPreExecute()
    }

    override fun onPostExecute(httpResponseMsg: String) {
        super.onPostExecute(httpResponseMsg)
        ...
    }

    override fun doInBackground(vararg params: MyParams): String {
        var name = params[0].paramName
        var address = params[0].paramaddress
        var latuitude = params[0].paramlatitude
        var longitude  = params[0].paramlongitude
        hashMap["name"] = name
        hashMap["address"] = address
        hashMap["latuitude"] = latuitude
        hashMap["longitude"] = longitude

        finalResult = httpParse.postRequest(hashMap, HttpURL)

        println("responseeeeeeeee-----="+finalResult)
        return finalResult
    }


}

val params = MyParams(funName,funAddress,funLatitude,funLongitude)
val myTask = myClass()
myTask.execute(params)

但是在这一行 hashMap["name"] = name 我得到了以下错误:

Type inference failed: Cannot infer type parameter V in inline operator fun MutableMap.set(key: K, value: V): Unit None of the following substitutions receiver: MutableMap arguments: (String,Params) receiver: MutableMap arguments: (String,String) can be applied to receiver: HashMap arguments: (String,String)

最佳答案

如你所说,你声明了hashMap作为 HashMap<String, MyParams> 类型的变量, 当你试图 put一个String , 和 String “不是”MyParams .

要解决此问题,您应该更改 MyParamsString (即 val hashMap = HashMap<String, String>() ,我猜这是您真正想要的),或在 map 中插入正确的值(即 hashMap["name"] = params[0] )。

顺便说一下,var paramlatitude: Float = 0.toFloat()可以简化为 var paramLatitude = 0F

关于android - 在 kotlin 的 api 中发送不同类型的 post 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50713579/

相关文章:

android - Vision BarcodeDetector 不读取数据矩阵条码

PHP多步注册流程

php - 使用 php 和 cURL 转发多部分表单数据

android - 如何在有空间的情况下执行繁重的数据库操作?

android - 具有 1k 对象列表的优化 ListView

java - Spinner onItemSelectedListener 不起作用?

kotlin - 在Kotlin中使用哪个标准库

android - 带汉字的 Firebase 远程配置

android - 无法使用 gradle 安装执行构建

node.js - app.post的第一个字符串参数有什么作用?