提问者:小点点

Android Kotlin截击-上传文件输入流和POST参数


我需要上传文件到服务器,无论是jpeg或GIF。

到目前为止,我使用的是loopj AsyncHttpClient,这个漂亮的库非常简单:

val params = RequestParams()
params.put("userid", prefs!!.getLong("userid", 0))
params.put("file", finalInputSteam)

但是当url为https时,我不能将它用于较旧的Android API。

那么如何用凌空抽射做到这一点呢? 除了loopj之外的任何东西似乎都是完全的垃圾,通常需要解决方法(例如:Android kotlin-volley在JsonArrayRequest中设置POST参数),而且文档非常贫乏:/

这是我目前所掌握的:

    val request = object: StringRequest(
        Method.POST,
        "$domain/upload.php",
        Response.Listener<String> {
            finish()
        }, Response.ErrorListener { volleyError ->

        })
    {
        override fun getParams(): MutableMap<String, String> {
            val parameters = HashMap<String, String>()
            parameters["userid"] = prefs!!.getLong("userid", 0).toString()
            parameters["file"] = finalInputSteam!!
            return parameters
        }
    }

    val rQueue = Volley.newRequestQueue(this@UploadImage)
    rQueue.add(request)

我得到一个错误,因为FinalInputSteamInputStream而不是String,那么如何做到这一点呢?


共1个答案

匿名用户

你查过这个链接了吗? 这个链接向您展示了如何做,同时,我建议您使用Retrofit2。