It is common requirement to implement URL encoding and decoding in Java while creating crawlers or downloaders. This post focus on creating modules for encoding and decoding of the passed url using Java.
Language Used:
Java
Git Location:
https://github.com/csanuragjain/extra/tree/master/EncodeDecodeURL
Program:
main method:
How it works:
1) url is the variable having encoded url which we want to decode
2) url2 is the variable having an url which we want to encode
3) We call the decode method which decodes the url and then print the same.
4) We call the encode method which encodes the url2 and then print the same.
encode method:
How it works:
1) We use the encode method of a predefined java class named URLEncoder
2) encode method of URLEncoder takes 2 arguments
3) 1st argument defines the url to be encoded
4) 2nd argument defines the encoding scheme to be used
5) After encoding the resulting encoded url is returned
decode method:
How it works:
1) Since same url can be encoded multiple times so we need to decode until url cannnot be decoded further.
2) For eg: "video%252Fmp4" is result of 2 encoding. On decoding it once we get "video%2Fmp4". Now url need to be further decoded so when we apply decoding again we get "video/mp4", which is the result.
3) We use the decode method of a predefined java class named URLDecoder
4) decode method of URLDecoder takes 2 arguments
5) 1st argument defines the url to be decoded
6) 2nd argument defines the decoding scheme to be used
7) After decoding the resulting decoded url is returned
8) We create 2 variables prevURL which is empty and decodeURL which contain the url to be decoded.
10) Now we update prevURL to decodeURL and update decodeURL with the decoded value of the url passed.
Output:
Full Program:
Hope it helps :)
Language Used:
Java
Git Location:
https://github.com/csanuragjain/extra/tree/master/EncodeDecodeURL
Program:
main method:
public static void main(String[] args) {
// TODO Auto-generated method stub
String url="https%3A%2F%2Fr1---sn-ci5gup-cags.googlevideo.com%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="https://r1---sn-ci5gup-cags.googlevideo.com/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);
}
How it works:
1) url is the variable having encoded url which we want to decode
2) url2 is the variable having an url which we want to encode
3) We call the decode method which decodes the url and then print the same.
4) We call the encode method which encodes the url2 and then print the same.
encode method:
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();
}
}
How it works:
1) We use the encode method of a predefined java class named URLEncoder
2) encode method of URLEncoder takes 2 arguments
3) 1st argument defines the url to be encoded
4) 2nd argument defines the encoding scheme to be used
5) After encoding the resulting encoded url is returned
decode method:
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();
}
}
How it works:
1) Since same url can be encoded multiple times so we need to decode until url cannnot be decoded further.
2) For eg: "video%252Fmp4" is result of 2 encoding. On decoding it once we get "video%2Fmp4". Now url need to be further decoded so when we apply decoding again we get "video/mp4", which is the result.
3) We use the decode method of a predefined java class named URLDecoder
4) decode method of URLDecoder takes 2 arguments
5) 1st argument defines the url to be decoded
6) 2nd argument defines the decoding scheme to be used
7) After decoding the resulting decoded url is returned
8) We create 2 variables prevURL which is empty and decodeURL which contain the url to be decoded.
Variable State:
prevURL = ""
decodeURL ="somethingvideo%252Fmp4"
9) We create an iteration which runs until prevURL!=decodeURL10) Now we update prevURL to decodeURL and update decodeURL with the decoded value of the url passed.
Variable State:
prevURL = "somethingvideo%252Fmp4"
decodeURL ="somethingvideo%2Fmp4"
11) Since prevURL!=decodeURL so Step 10 runs again Variable State:
prevURL = "somethingvideo%2Fmp4"
decodeURL ="somethingvideo/mp4"
12) Since prevURL!=decodeURL so Step 10 runs again Variable State:
prevURL = "somethingvideo/mp4"
decodeURL ="somethingvideo/mp4"
13) Since prevURL=decodeURL so the decoded url is returned.Output:
Decoded URL: https://r1---sn-ci5gup-cags.googlevideo.com/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%2Fr1---sn-ci5gup-cags.googlevideo.com%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
Full Program:
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%2Fr1---sn-ci5gup-cags.googlevideo.com%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="https://r1---sn-ci5gup-cags.googlevideo.com/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();
}
}
}
Hope it helps :)
Casino - Dr. Maryland
ReplyDeleteThe Casino at Harrah's Casino in Baltimore, MD, 용인 출장샵 features 1,980 slot 고양 출장마사지 machines, more than 400 남양주 출장안마 table games, 서산 출장안마 and a variety of video poker. The casino 김제 출장안마
This comment has been removed by the author.
ReplyDeleteNice blog! I read your article. I really like all the points that you mentioned are interesting and helpful. Thank you for sharing this blog.
ReplyDeletemarketing companies Milwaukee