欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

互联网并发与安全系列教程(10) -基于URL转码方式实现API设计

程序员文章站 2023-12-27 14:04:15
...

不管是以何种方式传递url时,如果要传递的url中包含特殊字符,如想要传递一个+,但是这个+会被url会被编码成空格,想要传递&,被url处理成分隔符。

尤其是当传递的url是经过Base64加密或者RSA加密后的,存在特殊字符时,这里的特殊字符一旦被url处理,就不是原先你加密的结果了。

url特殊符号及对应的编码:
互联网并发与安全系列教程(10) -基于URL转码方式实现API设计

URLEncodeURLDecode

接收参数案例tranIndex

@RestController
public class TranController {

	// 接受客户端参数
	@RequestMapping("/tranIndex")
	public String tranIndex(String name) {
		System.out.println("name:" + name);
		return name;
	}
}

客户端访问结果:传入+参数变为了空格。
互联网并发与安全系列教程(10) -基于URL转码方式实现API设计

解决办法:将+变为%2B
互联网并发与安全系列教程(10) -基于URL转码方式实现API设计


Java代码处理转码

URLEncoder.encode和decode

String encode = URLEncoder.encode("1+1", "UTF-8");
String decode = URLDecoder.decode(encode, "UTF-8");
System.out.println("encode:" + encode + ",decode:" + decode);

Http接口参数编码处理:

String url = "http://127.0.0.1:8080/tranIndex?";
// 参数转码
String strParam = "name=" + URLEncoder.encode("1+1", "utf-8");
String newUrl = url + strParam;
String result = HttpClientUtils.httpGet(newUrl);
System.out.println("result:" + result);

上一篇:

下一篇: