java代码处理URL转码

什么是URL转码

 

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

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

url特殊符号及对应的编码:

 

符号

url中的含义

编码

+

URL中+号表示空格

%2B

空格

URL中的空格可以用+号或者编码

%20

/

分隔目录和子目录

%2F

?

 

 

 

 

 

 

 

 

分隔实际的URL和参数

%3F

%

指定特殊字符

%25

#

表示书签

%23

&

URL中指定的参数间的分隔符

%26

=

URL中指定参数的值

%3D

 

 

 

URLEncode和URLDecode

接受参数案例tranIndex

 

@RestController

public classTranController {

 

      //接受客户端参数

      @RequestMapping("/tranIndex")

      publicString tranIndex(Stringname) {

            System.out.println("name:"+name);

            return name;

      }

}

 

 

客户端访问结果

 

传入+参数变为了空格。

 

解决办法:将+变为%2B

 

 

Java代码处理转码

URLEncoder.encode和decode

 

            Stringencode= URLEncoder.encode("1+1","UTF-8");

            Stringdecode= URLDecoder.decode(encode,"UTF-8");

            System.out.println("encode:"+encode+",decode:"+decode);

 

Http接口参数编码处理

 

          Stringurl="http://127.0.0.1:8080/tranIndex?";

          //参数转码

          StringstrParam="name="+ URLEncoder.encode("1+1","utf-8");

          StringnewUrl=url+strParam;

          Stringresult= HttpClientUtils.httpGet(newUrl);

          System.out.println("result:"+result);

 

 


版权声明:本文为wota5037原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。