- 前几天做项目的时候,遇到一个问题。在我们客户端给服务器发送请求的时候,获取不到响应的结果。然后我就向我们这个项目的技术总监提了这个问题。
- 技术总监说,你再发一次请求试试看,我去控制台看看是什么原因。一看是原来控制台输出的是乱码,所以获取不到响应的结果。
- 我就问为什么会出现这种原因?
技术总监说是因为前台页面上参数的编码和后台对该参数的解码不一致导致的。我就问应该怎么解决?
技术总监说你可以用下面的方法解决
将你的中文参数在前台先进行Base64编码,我后台也用这种方式来解码。后台你不用管,只要前台进行简单的编码就行了。果然我试了一下,在代码里能够成功的获取到响应的结果了。来看一下输出的打印信息:
看,这就成功的打印出响应的结果了。说明这种解决方案成功了。
比如你的的中文参数是:
String str = "这是中文参数";
接下来对这个参数进行Base63编码:
/**
* 请求地址参数传中文的时候用来编码用
*
* @param str
* 需要进行编码的中文字符
* @return
*/
public String getBase64String(String str) {
if (s == null) {
// 如果传入值为空,则返回null
return null;
} else {
try {
//将中文参数进行Base64编码,返回一个编码后的字符串。关键步骤
String str = Base64.encodeToString(s.getBytes("UTF-8"),Base64.DEFAULT);
// 将编码后的字符串的一些字符进行替换,关键步骤
str = str.replaceAll("\\+", "-");
str = str.replaceAll("\\/", "*");
// 返回编码并替换过字符的字符串
return str;
} catch (Exception e) {
// 编码出错,返回null并打印错误信息
e.printStackTrace();
return null;
}
}
}
以上就是该编码的实现方法,将你需要进行编码的参数传入即可。so easy!
String str = "这是中文参数";
String str_Base64 = getBase64String(str);
传参时用str_Base64就好了。
下面给出最关键的jar包,需要在项目中引用该jar包,之后上面的一些API你才可以调用。引用很简单,复制粘贴到libs目录下即可。
jar包资源下载地址在文章的末尾有给出。
点击我下载Jar包资源
每天进步一点点!加油!