Kotlin:带有基本身份验证和参数的Post请求导致服务器错误

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

我正在使用kotlin android应用程序通过基本授权连接到restful服务。检查
授权
标题。检查
参数
<已选中代码>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()
                }