Kotlin:带有基本身份验证和参数的Post请求导致服务器错误
我正在使用kotlin android应用程序通过基本授权连接到restful服务。检查Kotlin:带有基本身份验证和参数的Post请求导致服务器错误,kotlin,android-volley,Kotlin,Android Volley,我正在使用kotlin android应用程序通过基本授权连接到restful服务。检查授权标题。检查参数url。同时检查防火墙。 但是我得到了com.android.volley.ServerErrorerror。 在邮递员中,此值正常。以下是我的部分代码: val textView = findViewById<TextView>(R.id.editTextResponse) val queue = Volley.newReque
授权
标题。检查参数
<已选中代码>url。同时检查防火墙。
但是我得到了com.android.volley.ServerError
error。
在邮递员中,此值正常。以下是我的部分代码:
val textView = findViewById<TextView>(R.id.editTextResponse)
val queue = Volley.newRequestQueue(applicationContext)
val url = ApiUrls.CustomerAuthenticate;
// Request a string response from the provided URL.
val stringRequest = object : StringRequest(
Request.Method.POST, url,
Response.Listener<String> { response ->
// Display the first 500 characters of the response string.
textView.text = "Response is: ${response.substring(0, 500)}"
},
Response.ErrorListener { error ->
Toast.makeText(this, error.toString(), Toast.LENGTH_LONG).show()
textView.text = "That didn't work!"
}) {
override fun getHeaders(): MutableMap<String, String> {
val headers = HashMap<String, String>()
val authorizationString = String.format(
"%s:%s",
"username",
"password"
)
val authorizationByte = authorizationString.toByteArray()
val base64Encoded = Base64.encodeToString(authorizationByte, Base64.NO_WRAP)
headers["Authorization"] = String.format("Basic %s", base64Encoded)
return headers
}
override fun getParams(): Map<String, String> {
val params = HashMap<String, String>()
params["username"] = "username"
params["password"] = "password"
return params
}
}
stringRequest.setRetryPolicy(
DefaultRetryPolicy(
45000,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT
)
)
// Add the request to the RequestQueue.
queue.add(stringRequest)
val textView=findViewById(R.id.editTextResponse)
val queue=Volley.newRequestQueue(applicationContext)
val url=apirls.CustomerAuthenticate;
//从提供的URL请求字符串响应。
val stringRequest=对象:stringRequest(
Request.Method.POST,url,
Response.Listener{Response->
//显示响应字符串的前500个字符。
textView.text=“响应为:${Response.substring(0500)}”
},
Response.ErrorListener{error->
Toast.makeText(这个,error.toString(),Toast.LENGTH\u LONG.show())
textView.text=“那没用!”
}) {
重写fun getHeaders():MutableMap{
val headers=HashMap()
val authorizationString=String.format(
“%s:%s”,
“用户名”,
“密码”
)
val authorizationByte=authorizationString.toByteArray()
val base64Encoded=Base64.encodeToString(authorizationByte,Base64.NO_WRAP)
标题[“授权”]=String.format(“基本%s”,base64Encoded)
返回标题
}
重写fun getParams():映射{
val params=HashMap()
参数[“用户名”]=“用户名”
参数[“密码”]=“密码”
返回参数
}
}
stringRequest.setRetryPolicy(
DefaultRetryPolicy(
45000,
DefaultRetryPolicy.DEFAULT\u最大重试次数,
DefaultRetryPolicy.DEFAULT\u BACKOFF\u MULT
)
)
//将请求添加到RequestQueue。
添加(stringRequest)
经过一番努力,终于找到了答案。替换
override fun getParams(): Map<String, String> {
val params = HashMap<String, String>()
params["username"] = "username"
params["password"] = "password"
return params
}
override fun getParams():映射{
val params=HashMap()
参数[“用户名”]=“用户名”
参数[“密码”]=“密码”
返回参数
}
与
覆盖getBodyContentType():字符串{
返回“application/json”
}
重写fun getBody():ByteArray{
val params2=HashMap()
参数2.put(“用户名”、“用户名”)
参数2.put(“密码”、“密码”)
返回JSONObject(params2作为Map.toString().toByteArray()的值)
}
override fun getBodyContentType(): String {
return "application/json"
}
override fun getBody(): ByteArray {
val params2 = HashMap<String, String>()
params2.put("username", "username")
params2.put("password", "password")
return JSONObject(params2 as Map<*, *>).toString().toByteArray()
}