【发布时间】:2019-08-02 07:59:24
【问题描述】:
我正在开发一个 android 应用程序,我想制作一个通用的 volley post request 函数,我将我的函数编写如下:
public fun <T> push(context: Context, url: String, myObject: T, completion: (response: String) -> Unit) {
val queue = Volley.newRequestQueue(context)
val sr = object : StringRequest(
Method.POST, url,
Response.Listener { response ->
println(response)
completion(response)
},
Response.ErrorListener { volleyError ->
Common.showVolleyError(volleyError, context)
}) {
override fun getParams(): Map<String, String> {
val params = myObject as HashMap<String, String>
return params
}
@Throws(AuthFailureError::class)
override fun getHeaders(): Map<String, String> {
val params = HashMap<String, String>()
params["Content-Type"] = "application/x-www-form-urlencoded"
params["X-Requested-With"] = "XMLHttpRequest"
return params
}
}
sr.retryPolicy = DefaultRetryPolicy(
0,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT
)
queue.add(sr)
}
我强制执行的是如何将我的可序列化对象转换为HashMap<String, String>(),即如何将myObject 绑定到getParams() 函数,
【问题讨论】:
-
你的 api 是否需要一个 json 正文来发送请求?
-
我的 API 接收正文为
application/x-www-form-urlencode
标签: java android generics kotlin android-volley