项目背景:android+SpringBoot
在向springboot后端通过url传参过程中,后端idea一直报错找不到变量或者变量为空,检查了很久一直没发现问题所在,以为是Controller中@GetMapping注解的对应函数接收参数过多,改成只接受一个@RequestParam后,仍然报相同的错。
回到as查看才发现url只有一半,如下图
对比后发现,中文字符处,url断开,即无法识别。
那么肯定大概率是跟编码有关,不知道具体哪里出现了问题,但可以直接在传输前最后一步执行一下编码转换。获得移动端参数后,直接将编码转换为utf-8,(数字字符就不用了)符合浏览器的模式,用try..catch避免转码失败无法编译,这部分执行后,url显示完整,后端可正常接受传值。
public void onClick(View v) {
String pe_name=result.getName().toString();
String pe_gender=result.getSex().toString();
String pe_ethnic=result.getNation().toString();
String pe_address=result.getAddress().toString();
String encode_name = null,encode_gender=null,encode_ethnic=null,encode_address = null;
try {
encode_name = URLEncoder.encode(pe_name, "utf-8");
encode_gender = URLEncoder.encode(pe_gender, "utf-8");
encode_ethnic = URLEncoder.encode(pe_ethnic, "utf-8");
encode_address= URLEncoder.encode(pe_address, "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
url=fixurl+"idcard/add?pe_no="+result.getId().toString()
+"&&pe_name="+encode_name
+"&&pe_gender="+encode_gender
+"&&pe_ethnic="+encode_ethnic
+"&&pe_birthday="+result.getBirth().toString()
+"&&pe_address="+encode_address;
Log.d("yjj",url);
getNetwork(url);