如何在 Kotlin 中使用 volley 将标头放入 url 中?

问题描述 投票:0回答:2

我的代码-

val accessTokenRequest: JsonObjectRequest = JsonObjectRequest(Request.Method.GET, url,
            Response.Listener { response ->
            },
            Response.ErrorListener { error ->
                Toast.makeText(activity,error.toString(), Toast.LENGTH_LONG).show()
            }
    )

    AppController.instance!!.addToRequestQueue(accessTokenRequest)

我要放置的标题 - “搜索”& 「授权」

kotlin android-volley kotlin-android-extensions kotlin-extension rx-kotlin
2个回答
8
投票

尝试使用以下代码添加标题

val accessTokenRequest: JsonObjectRequest = object : JsonObjectRequest(
    Request.Method.GET, "", JSONObject(),
    Response.Listener<JSONObject?> {
        TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
    }, Response.ErrorListener {
    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}) {
    @Throws(AuthFailureError::class)
    override fun getHeaders(): Map<String, String> {
        var params: MutableMap<String, String>? = super.getHeaders()
        if (params == null) params = HashMap()
        params["Authorization"] = "Your authorization"
        //..add other headers
        return params
    }
}

注意:要从 java 生成 kotlin 代码,请尝试使用 Ctrl + Shift + Alt + K 或简单地将其复制粘贴到 kotlin 文件上。


0
投票

正如@chitgoks所说,@Abilash代码发生

UnsupportedOperationException at java.util.AbstractMap.put
错误。所以我重写了他的代码来修复它。

val accessTokenRequest: JsonObjectRequest = object :
            JsonObjectRequest(Request.Method.GET, "", JSONObject(), Response.Listener<JSONObject?> {
                // Add something you want to run on success
            }, Response.ErrorListener {
                // Add something you wanna run on error
            }) {
            @Throws(AuthFailureError::class)
            override fun getHeaders(): Map<String, String> {
                val params = HashMap<String, String>()
                params.putAll(super.getHeaders())
                params["Accept"] = "application/json"
                //add your header like above line
                return params
            }
        }
© www.soinside.com 2019 - 2024. All rights reserved.