在Kotlin中使用参数制作Volley StringRequest

时间:2019-10-27 03:01:02

标签: android kotlin android-volley

我试图在Volt StringRequest中创建一个包含Kotlin中自定义参数的字符串,但是我的getParams方法没有被调用。

我最终想要完成的是发出一个等效于以下curl命令的请求:

curl -X GET http://novaclean.test/api/home \
 -H "Accept: application/json" \
 -H "Content-Type: application/json" \
 -d '{"api_token": "2ff52db35e359b02e83f8f45910f8386883c3190c3818d8fd6b6a4dec345"}'

我已经写了覆盖getHeaders和getParams的请求,但是从未调用过我的getParams方法,所以我没有得到想要的响应(如果没有给我的api_token,我会得到401后端)

我的代码:

val stringRequest = object: StringRequest(Request.Method.GET, "http://novaclean.test/api/home", 
                  object: Response.Listener<String>{
                      override fun onResponse(response: String?) {
                          Log.d("Response",response)
                      }

                  },
                    object : Response.ErrorListener{
                        override fun onErrorResponse(error: VolleyError?) {
                            Log.d("Error",error.toString())
                        }
                    }){
                override fun getHeaders(): Map<String, String> {
                    val headers = HashMap<String, String>()
                    headers.put("Content-Type", "application/json")
                    headers.put("Accept","application/json")

                    return headers
                }

                override fun getParams(): MutableMap<String, String> {
                    val params = HashMap<String, String>()
                    params["api_token"] = apiToken
                    return params
                }
            }


            RequestQueueSingleton.getContextlessInstance().addToRequestQueue<String>(stringRequest)

我希望调用getParams()函数来将我的api令牌传递给我的请求,但是使用调试并在其中放置断点,我可以看到它从未被调用。

0 个答案:

没有答案