我想向我的服务器发出排球发布请求,但是当发送带有重音符号的参数时,重音符号变为``。如果我通过Web应用程序或邮递员发出请求,则服务器上会接受该重音符号。问题是参数通过截击传递。
这是我提出齐发请求的功能示例。
fun post(path: String, params: JSONObject, headers: HashMap<String, String>, completionHandler: (response: JSONObject?) -> Unit) {
val jsonObjReq = object : JsonObjectRequest(Method.POST, basePath + path, params,
Response.Listener<JSONObject> { response ->
Log.d(TAG, "/post request OK! Response: $response")
val key = "code"
val value = 200
response.put(key, value)
completionHandler(response)
},
Response.ErrorListener { error ->
Log.d(TAG, "/post request fail! Error:" + error.message)
completionHandler(null)
}) {
@Throws(AuthFailureError::class)
override fun getHeaders(): Map<String, String> {
headers.put("Content-Type", "application/json ; charset=utf-8")
return headers
}
}
答案 0 :(得分:0)
查看Request.java的源代码时,它突出指出:
/**
* Default encoding for POST or PUT parameters.
* See {@link #getParamsEncoding()}.
**/
private static final String DEFAULT_PARAMS_ENCODING = "UTF-8";
确保源代码文件(Android Studio中通常在右下角有一个小指示器)和发布的内容确实具有UTF-8
编码(这在Web开发中是一个非常普遍的问题,可能也适用这里)。如果内容没有UTF-8
编码,则在发布内容之前需要对其进行转换,以免以�
替换字符结尾。请参见此example进行String
的转换。
还一次检查脚本的编码,数据库连接和服务器端的数据库;如果其中任何一个不支持UTF-8
,它将不起作用。不一定是客户端问题(开箱即用的支持UTF-8
)。