首页 文章

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

提问于
浏览
0

我尝试在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 我收到以下错误:

类型推断失败:无法在内联运算符乐趣中推断类型参数V MutableMap.set(键:K,值:V):单位以下替换接收器:MutableMap参数:(String,Params)receiver:MutableMap arguments:(String ,String)可以应用于接收器:HashMap参数:(String,String)

2 回答

  • 0

    如你所说,你将 hashMap 声明为 HashMap<String, MyParams> 类型的变量,而你正在尝试 put a StringString "is not" MyParams .

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

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

  • 0

    var name = params[0].paramName 是一个字符串

    var address = params[0].paramaddress 是一个字符串

    所以当你这样做时:

    hashMap["name"] = name
    hashMap["address"] = address
    

    使用像这样的Hashmap var hashMap = java.util.HashMap<String, MyParams>() 它假设你必须像HashMap那样创建一个HashMap而不是HashMap .

    更改Hashmap的类型或在Hashmap的值中发送MyParams类型 .

相关问题