在单点登录中传递参数问题

这两天一直忙一个事情,在单点登录运用的过程中因为要传6个参数,get请求每次只能获取第一个参数,post只能正常访问路径,而参数却全部为null.

经历了postman的各种测试,晕头转向,在产品部老哥的一句话让我醍醐灌顶瞬间清醒,为什么不尝试把我们习惯的http请求中多参数传递的拼接符号

“&”尝试转义!

瞬间成功!

这件事让我琢磨了两天,因为一句话而茅塞顿开。

失败的请求方式:

http://localhost:8090/gzdbthreeweb/control?pagesso&zxssoticket=Y4WNA3L4DLEBd5%2BWDWK%2F%2BOfnppmk9zCGVJ6La8Kl7aE%3D&_fwurl=//provide/receivePort.pt?
title=ckx060606&task_sys_source=民生系统&task_sys_sendid=OKCORT&source=DZGZH&remark=ZW&deptName=民政局
&attachment=%27172/fujian.doc@107/xxx.xml@61/vvv.pdf@71/zzz.xl%27

这样的话我们只能获取请求路径下的第一个参数title。

成功的请求方式:(把原来的参数拼接符号“&”替换为“%26”)

http://localhost:8090/gzdbthreeweb/control?pagesso&zxssoticket=l0gOUtjtcELg9qPzRK7yW6A9ob8%2Bn%2FzY%2B13cuE6bcYw%3D&_fwurl=/provide/receivePort.pt?
title=ckx060606%26task_sys_source=民生系统%26task_sys_sendid=OKCORT%26source=DZGZH%26remark=ZW%26deptname=民政局%27
%26attachment=%27172/fujian.doc@107/xxx.xml@61/vvv.pdf@71/zzz.xl%27

成功!可以获取每个参数。

下面也将web中url请求中需要转义的字符分享给大家,避免在小问题中浪费大时间:

web 开发中通过问号(?)方式在浏览器地址栏中传值时。浏览器是通过“&”来区分问号后的参数个数的。 如果出现传值参数中带有“&”时,在接受页面就会出现错误,类似如下请求路径:/next.jsp?param1=hendhs89&furej & param2=sss
参数param1中含有转义字符“&” ,这样会导致被请求页的参数接收错误。
在传值前 通过 java.net.URLEncoder.encode(param1) 编码处理后,可将转义字符转为16进制;
1. + URL 中+号表示空格 %2B
2. 空格 URL中的空格可以用+号或者编码 %20
3. / 分隔目录和子目录 %2F
4. ? 分隔实际的 URL 和参数 %3F
5. % 指定特殊字符 %25
6. # 表示书签 %23
7. & URL中指定的参数间的分隔符%26
8. = URL中指定参数的值 %3D
9. ! URL中指定参数的值 %21

  

原文地址:https://www.cnblogs.com/ckxlovejava/p/6963746.html