美国上市公司,专注Java培训21年

Java实现的URL编码和解码技术


Java实现的URL编码和解码技术

Main 方法

public static void main(String[] args) {

// TODO Auto-generated method stub

String url="https%3A%2F%#%2Fvideoplayback%3Fpcm2cms%3Dyes%26mime%3Dvideo%252Fmp4%26pl%3D21%26itag%3D22%26\u0026itag=43\u0026type=video%2Fwebm%3B+codecs%3D%22vp8.0%2C+vorbis%22\u0026quality=medium";

String url2="#/videoplayback?pcm2cms=yes&mime=video/mp4&pl=21&itag=22&&itag=43&type=video/webm; codecs=\"vp8.0, vorbis\"&quality=medium";

String decodeURL = decode(url);

System.out.println("Decoded URL: "+decodeURL);

String encodeURL = encode(url2);

System.out.println("Encoded URL2: "+encodeURL);

}

它是如何工作的?

1. url 是一个变量,保存着我们希望解码的已被编码的 URL

2. url2 是保存着我们希望编码的 url 的变量

3. 调用 decode 方法,该方法解码和打印 URL

4. 调用 encode 方法,该方法编码和打印 url2

Encode 方法

public static String encode(String url) {

try {

String encodeURL=URLEncoder.encode( url, "UTF-8" );

return encodeURL;

} catch (UnsupportedEncodingException e) {

return "Issue while encoding" +e.getMessage();

}

}

它是如何工作的

1. 使用名为 URLEncoder 的预定义 Java 类的 encode 方法

2. URLEncoder 类的 encode 方法需要两个参数:

a. 第一个参数定义的是待编码的 URL

b. 第二个参数定义的是使用的编码方案

3. 编码之后,将返回编码后的 URL 结果

public static String decode(String url) {

try {

String prevURL="";

String decodeURL=url;

while(!prevURL.equals(decodeURL))

{

prevURL=decodeURL;

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

}

return decodeURL;

} catch (UnsupportedEncodingException e) {

return "Issue while decoding" +e.getMessage();

}

}

Decode 方法

public static String decode(String url){

try {

String prevURL="";

String decodeURL=url;

while(!prevURL.equals(decodeURL))

{

prevURL=decodeURL;

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

}

return decodeURL;

} catch (UnsupportedEncodingException e) {

return "Issue while decoding" +e.getMessage();

}

}

它是如何工作的

1. 因为相同的 URL 可以被多次编码,所以我们需要一直对它进行解码直到不能再解码为止。

举个例子,"video%252Fmp4" 是两次编码的结果。第一次解码后,我们得到 "video%2Fmp4"。要得到正确的结果 "video/mp4",我们需要再解码一次。

2. 使用名为 URLEncoder 的预定义 Java 类的 decode 方法来解

3. URLDecoder 类的 decode 方法需要两个参数:

a. 第一个参数定义需要解码的 URL

b. 第二个参数定义使用的解码方案

4. 解码后,返回已解码的 URL.

5. 创建两个变量:prevURL 为空串,decodeURL 包含待解码的 URL

Variable State:

prevURL = ""

decodeURL ="somethingvideo%252Fmp4"

6. 创建一个重复执行的步骤,直到 prevURL 与 decodeURL 的值相等

7. 将 decodeURL 的值赋值给 prevURL,将传递的 URL 解码后的值赋给 decodeURL

Variable State:

prevURL = "somethingvideo%252Fmp4"

decodeURL ="somethingvideo%2Fmp4"

8. 如你所见,prevURL 的值不等于 decodeURL 的值,我们再次执行

Variable State:

prevURL = "somethingvideo%2Fmp4"

decodeURL ="somethingvideo/mp4"

9. 再一次

Variable State:

prevURL = "somethingvideo/mp4"

decodeURL ="somethingvideo/mp4"

10. 现在,prevURL 的值等于 decodeURL 的值了,得到了正确的解码结果。

输出

Decoded URL: #/videoplayback?pcm2cms=yes&mime=video/mp4&pl=21&itag=22&&itag=43&type=video/webm; codecs="vp8.0, vorbis"&quality=medium Encoded URL2: https%3A%2F%#%2Fvideoplayback%3Fpcm2cms%3Dyes%26mime%3Dvideo%2Fmp4%26pl%3D21%26itag%3D22%26%26itag%3D43%26type%3Dvideo%2Fwebm%3B+codecs%3D%22vp8.0%2C+vorbis%22%26quality%3Dmedium

完整的程序

package com.cooltrickshome; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; public class URLEncodeDecode {

public static void main(String[] args) {

// TODO Auto-generated method stub String url="https%3A%2F%#%2Fvideoplayback%3Fpcm2cms%3Dyes%26mime%3Dvideo%252Fmp4%26pl%3D21%26itag%3D22%26\u0026itag=43\u0026type=video%2Fwebm%3B+codecs%3D%22vp8.0%2C+vorbis%22\u0026quality=medium";

String url2="#/videoplayback?pcm2cms=yes&mime=video/mp4&pl=21&itag=22&&itag=43&type=video/webm; codecs=\"vp8.0, vorbis\"&quality=medium";

String decodeURL = decode(url);

System.out.println("Decoded URL: "+decodeURL);

String encodeURL = encode(url2);

System.out.println("Encoded URL2: "+encodeURL);

}

public static String decode(String url)

{

try {

String prevURL="";

String decodeURL=url;

while(!prevURL.equals(decodeURL))

{

prevURL=decodeURL;

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

}

return decodeURL;

} catch (UnsupportedEncodingException e) {

return "Issue while decoding" +e.getMessage();

}

}

public static String encode(String url)

{

try {

String encodeURL=URLEncoder.encode( url, "UTF-8" );

return encodeURL;

} catch (UnsupportedEncodingException e) {

return "Issue while encoding" +e.getMessage();

}

}

}

感谢大家阅读由java培训机构分享的“Java实现的URL编码和解码技术”希望对大家有所帮助,更多精彩内容请关注Java培训官网

免责声明:本文由小编转载自网络,旨在分享提供阅读,版权归原作者所有,如有侵权请联系我们进行删除


【免责声明】本文部分系转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,如涉及作品内容、版权和其它问题,请在30日内与我们联系,我们会予以重改或删除相关文章,以保证您的权益!

Java开发高端课程免费试学

大咖讲师+项目实战全面提升你的职场竞争力

  • 海量实战教程
  • 1V1答疑解惑
  • 行业动态分析
  • 大神学习路径图

相关推荐

更多

Java开班时间

收起