Java如何处理参数中带特殊符号的请求?

博客讲述了活动用二维码引流量时的问题。服务器生成二维码接口接收的url参数是动态链接,含特殊字符,浏览器会自动截取&及其后的值。解决办法是前端传递参数时进行encode处理,如将参数encode后再发送请求即可。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景:某个活动需要使用二维码来分享活动,引流量入口,我使用google的zxing在服务器生成二维码时候,接口需要接收一个名为url的参数,这个参数的实际取值是个动态链接,比如:http://ac.txqq.com?url=www.baidu.com?simons&token=×××,很显然,服务端直接接收前端传递过来的参数时,浏览器会自动截取掉&极其后面的值。

这里以http://localhost/getCode?url=www.baidu.com?channel=HY0649&type=02为例:

很好解决:前端传递参数时候encode一下此参数即可。我这边在java模拟一下encode,再用encode后的参数发送请求

    public static void main(String[] args) throws UnsupportedEncodingException {
        String url = "www.baidu.com?channel=HY0649&type=02";
        String encodeUrl = URLEncoder.encode(url, "UTF-8");
        System.out.println(encodeUrl);
    }

encode后的url参数输出为:www.baidu.com%3Fchannel%3DHY0649%26type%3D02

再次发送请求http://localhost/getCode?url=www.baidu.com%3Fchannel%3DHY0649%26type%3D02

酱紫就可以啦!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值