URLEncoder Ŭ·¡½º´Â ¿î¿µÃ¼°è¸¶´Ù ÀϺΠ¹®ÀÚ¸¦ ÀνÄÇÏ´Â ¹æ½ÄÀÌ Æ²¸®±â ¶§¹®¿¡ ÀÌ ¹®Á¦¸¦ ÇØ°áÇϱâ À§Çؼ »ç¿ëÇϴ Ŭ·¡½ºÀÔ´Ï´Ù. ¿©·¯ºÐÀº °¡²û À¥ºê¶ó¿ìÁ®ÀÇ ÁÖ¼ÒÁÙ¿¡ ±úÁø ±ÛÀÚ¸¦ ÀÚÁÖ º¸°Ô µÇ´Âµ¥ À̰ÍÀÌ ¹Ù·Î EncodingµÈ ¹®ÀÚµéÀÔ´Ï´Ù. º¸Åë, ¾Æ½ºÅ° ¹®ÀÚ°¡ ¾Æ´Ñ ¹®ÀÚµéÀº ÀüºÎ Ư¼öÇÑ ¹®ÀÚµé·Î º¯È¯ÇÏ¿© ó¸®ÇÏ°Ô µË´Ï´Ù.
URLEncoderŬ·¡½º´Â ÀϹݹ®ÀÚ¿À» À¥¿¡¼ Åë¿ëµÇ´Â ¡®x-www-form-urlencoded¡¯ Çü½ÄÀÇ MIME(Multipurpose Internet Mail Extensions) Çü½ÄÀ¸·Î º¯È¯ÇÏ´Â ¿ªÇÒÀ» ´ã´çÇÕ´Ï´Ù. ½±°Ô ¸»ÇÏÀÚ¸é ´ë¼Ò¹®ÀÚ, ¼ýÀÚ, ¹ØÁÙÀ» Á¦¿ÜÇÑ URL¿¡ ÀÖ´Â ¹®ÀÚ¸¦ ÄÚµåÈÇÏ´Â °ÍÀÔ´Ï´Ù. º¯È¯±ÔÄ¢Àº ´ÙÀ½°ú °°½À´Ï´Ù.
n ¾Æ½ºÅ°¹®ÀÚ(a~z, A~Z, 1~9), ".", "-", "*", "_" : ±×´ë·Î Àü´Þ
n °ø¹é¹®ÀÚ(¡® ¡¯) : ¡¯+¡¯ ±âÈ£·Î º¯È¯µÊ
n ±âŸ¹®ÀÚ : ¡®%xy¡¯ ¿Í °°ÀÌ ¼¼ °³ÀÇ ¹®ÀÚ·Î º¯È¯µÇ¸ç, ÀÌ ¶§ xy´Â ÇØ´ç ¹®ÀÚÀÇ ASCIIÄڵ带 16Áø¼öÈÇÑ °á°ú¸¦ µÎÀÚ¸®ÀÇ ´ë¹®ÀÚ·Î ³ªÅ¸³½ °ÍÀÌ´Ù.
¿©±â¼ ÇѰ¡Áö ½Å°æ½á¾ß ÇÒ ºÎºÐÀº À¯´ÏÄÚµå ¹®ÀÚÀÇ °æ¿ì 16Áø¼ö ÀÎÄÚµùÀÌ ÀϾ±â Àü¿¡ ÇØ´ç Ç÷¿Æû¿¡¼ »ç¿ëÇÏ´Â ¹®ÀÚ -> ¹ÙÀÌÆ® ÀÎÄÚµùÀ» »ç¿ëÇÏ¿© ¹®ÀÚ ½ºÆ®¸²ÀÇ µµ¿òÀ» ¹Þ¾Æ ¹ÙÀÌÆ®·Î ¹Ù²ï´Ù´Â »ç½ÇÀÔ´Ï´Ù.
URLEncoderŬ·¡½ºÀÇ ÁÖ¿ä ¸â¹ö¸Þ¼µå |
public static String encode(String s) : ¹®ÀÚ¿À» x-www-form-urlencoded Çü½ÄÀ¸·Î º¯È¯ÇÑ´Ù. |
ÀÌ¿¡ ¹ÝÇØ URLDecoderŬ·¡½º´Â URLEncoderŬ·¡½º¿Í ¹Ý´ëÀÇ ±â´ÉÀ» Çϴ Ŭ·¡½ºÀÔ´Ï´Ù. ¡®x-www-form-urlencoded¡¯Çü½ÄÀÇ MIMEÇü½ÄÀ» ÀÏ¹Ý ¹®ÀÚ¿·Î º¯È¯ ÇÏ´Â ±â´ÉÀ» ´ã´çÇϰí ÀÖ½À´Ï´Ù. Áï, URLEncoder·Î ¾ÏÈ£È µÈ °ÍÀ» ´Ù½Ã ÀÏ¹Ý ÅØ½ºÆ® ÇüÅ·Πº¯È¯ÇÏ´Â °ÍÀÔ´Ï´Ù. º¯È¯±ÔÄ¢Àº URLEncoderŬ·¡½ºÀÇ ¿ª¼øÀ¸·Î ÅØ½ºÆ®È ÇÕ´Ï´Ù.
n ¾Æ½ºÅ°¹®ÀÚ(a~z, A~Z, 1~9), ".", "-", "*", "_" :±×´ë·Î Àü´Þ
n ¡®+¡¯ : °ø¹é¹®ÀÚ(¡® ¡¯)·Î º¯È¯µÊ
n ¡®%xy¡¯ : ¡®xy¡¯¸¦ 16Áø¼ö µÎ ÀÚ¸®·Î °®´Â ¹®ÀÚ·Î º¯È¯.
¹ÙÀÌÆ®½ºÆ®¸²À» ÅëÇØ ¿À´Â µ¥ÀÌÅÍ´Â Ç÷§Æû¿¡¼ ±âº»ÀûÀ¸·Î »ç¿ëÇÏ´Â ¹ÙÀÌÆ®->¹®ÀÚ ÀÎÄÚµùÀ» ÅëÇØ StringÀ¸·Î ¹Ù²ï´Ù´Â »ç½ÇÀ» ÀØÁö ¸¶½Ã±æ ¹Ù¶ø´Ï´Ù.
URLConnectionŬ·¡½ºÀÇ ÁÖ¿ä ¸â¹ö¸Þ¼µå |
public static String decode(String s) : ¡®x-www-form-urlencoded¡¯ Çü½ÄÀÇ MIME ŸÀÔÀ» StringÀ¸·Î º¯È¯ÇÑ´Ù. |
±×·³ ¿©±â¼ ÀÌÇØ¸¦ ½±°ÔÇϱâÀ§ÇØ ¹®ÀÚ¿À» ÀÎÄÚµùÇÏ°í ´Ù½Ã º¹¿øÇÏ´Â ¿¹Á¦¸¦ Çϳª º¸µµ·Ï ÇϰڽÀ´Ï´Ù.
URLEncoderTest.java(URLEncoder¿Í URLDecoderŬ·¡½º Å×½ºÆ® |
import java.net.*; public class URLEnDecoderTest{ public static void main(String [] args) { String str, encoderStr, decoderStr; str="¼Ò¼³ °°Àº ÀÚ¹Ù - www.jabook.org"; encoderStr = URLEncoder.encode(str); decoderStr = URLDecoder.decode(encoderStr); System.out.println("str : " + str); System.out.println("encoderStr : " + encoderStr); System.out.println("decoderStr : " + decoderStr); } } |
C:\JavaExample\16>java URLEnDecoderTest str : ¼Ò¼³ °°Àº ÀÚ¹Ù - www.jabook.org encoderStr : %BC%D2%BC%B3+%B0%B0%C0%BA+%C0%DA%B9%D9+-+www.jabook.org decoderStr : ¼Ò¼³ °°Àº ÀÚ¹Ù - www.jabook.org |
°£´ÜÇÏÁÒ? ÀÏ´Ü Ã³¸®ÇÒ ¹®ÀÚ¿À» Çϳª ¸¸µé¾î¼ ÀÌ ¹®ÀÚ¿À» URL ÀÎÄÚµùÇÏ´Â ºÎºÐÀº ´ÙÀ½°ú °°½À´Ï´Ù.
n String str="¼Ò¼³ °°Àº ÀÚ¹Ù - www.jabook.org";
n String encoderStr = URLEncoder.encode(str);
ÀÌ·¸°Ô ¹®ÀÚ¿À» ÀÎÄÚµùÇÏ¸é ¾Æ·¡¿Í °°ÀÌ ¾Æ½ºÅ°Äڵ尡 ¾Æ´Ñ ´ëºÎºÐÀÇ ±ÛµéÀº ±úÁ®¼ ³ªÅ¸³ª°Ô µË´Ï´Ù.
n %BC%D2%BC%B3+%B0%B0%C0%BA+%C0%DA%B9%D9+-+www.jabook.org
±×¸®°í ¹®ÀÚ¿À» º¹¿øÇÏ¸é ¿ø·¡±Û ´ë·Î º¹¿øµË´Ï´Ù. º¹¿øÇÏ´Â ÄÚµå´Â ¾Æ·¡¿Í °°½À´Ï´Ù.
n String decoderStr = URLDecoder.decode(encoderStr);
ÀÌ ¿¹Á¦´Â ½ÇÁ¦ À¥°ú ¿¬°áµÇÁö´Â ¾Ê¾ÒÁö¸¸ ÀÎÄÚµù°ú µðÄÚµùÀÇ °úÁ¤À» Àß º¸¿©ÁÖ°í ÀÖ½À´Ï´Ù. ÀÚ! ±×·¸´Ù¸é ½ÇÁ¦ ³×Æ®¿÷»ó¿¡¼ µ¿ÀÛÇÏ´Â ¿¹Á¦¸¦ ¸¸µé¾î º¸µµ·Ï ÇÏÁÒ. ¾Æ·¡ÀÇ ¿¹Á¦´Â Post¹æ½ÄÀ¸·Î µ¥ÀÌÅ͸¦ º¸³»±âÀ§Çؼ URLConnectionÀ» »ç¿ëÇÏ´Â ¹æ¹ý·Ðµµ »ç¿ëÇÕ´Ï´Ù. ±×¸®°í Post¹æ½ÄÀÇ Äõ¸®¸¦ º¸³¾ ¶§ ÇѱÛÀ» URLEncodingÇÏ¿© Àü¼ÛÇÏ°Ô µË´Ï´Ù. ¸¸¾à ¿©·¯ºÐÀÌ ¹®ÀÚ¿À» ÀÎÄÚµùÇÏÁö ¾Ê¾Ò´Ù¸é ÀüÇô ´Ù¸¥ °á°ú¸¦ ¾ò°Ô µÉ °ÍÀÔ´Ï´Ù.
URLConnectionOutput.java(CGIÀÇ Post¹æ½ÄÀÇ µ¥ÀÌÅÍ ¾ò¾î³»±â) |
import java.net.*; import java.io.*; public class URLConnectionOutput { public static void main(String[] args) { try { URL url = new URL("http://kr.search.yahoo.com/bin/options"); URLConnection conn = url.openConnection(); conn.setDoOutput(true); OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); wr.write("p=" + URLEncoder.encode("»ç¶û")); wr.flush(); wr.close(); String line=null; BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); while ((line = rd.readLine()) != null) { System.out.println(line); } rd.close(); } catch (Exception e) {e.printStackTrace();} } } |
Ãâ·ÂȸéÀÌ ³Ê¹« ±æ±º¿ä. ¿©·¯ºÐÀÌ Á÷Á¢ ÄÜ¼Ö È¸é¿¡ °á°ú¸¦ Ãâ·Â ÇØ º¸½Ã±â ¹Ù¶ø´Ï´Ù. |
ÀÌ ÇÁ·Î±×·¥ÀÇ Ãâ·Â°á°ú´Â ¾ßÈÄÀÇ °Ë»ö´Ü¾î¿¡ ¡°»ç¶û¡±À̶ó°í ÀÔ·ÂÇÑ °Í°ú °°Àº °á°ú¸¦ Ãâ·ÂÇÏ°Ô µÉ °ÍÀÔ´Ï´Ù. ÀÌÁ¦ ¿¹Á¦¸¦ ÀÚ¼¼È÷ µé¿©´Ù º¸°Ú½À´Ï´Ù.
¸ÕÀú Post¸¦ ¹Þ¾Æ µéÀÏ URL°´Ã¼ºÎÅÍ »ý¼ºÇÕ´Ï´Ù. À̶§ URL°´Ã¼´Â php¶Ç´Â cgiµîÀÇ Postµ¥ÀÌÅ͸¦ ¹ÞÀ» ¼ö ÀÖ´Â URL°´Ã¼¿©¾ß ÇÕ´Ï´Ù. ±×¸®°í ÀÌ URL°´Ã¼¿¡ Connnection¼³Á¤ºÎÅÍ ÇÏ°Ô µË´Ï´Ù.
n URL url = new URL("http://kr.search.yahoo.com/bin/options");
n URLConnection conn = url.openConnection();
»ý¼ºµÈ URLConnection connÀÇ ¼³Á¤À» µ¥ÀÌÅ͸¦ º¸³¾ ¼ö ÀÖ´Â ¼Ó¼ºÀ¸·Î ¹Ù²Ù´Â ÀÛ¾÷À» ÇÏ°Ô µË´Ï´Ù.
n conn.setDoOutput(true);
ÀÌ ÀÛ¾÷±îÁö ¸¶ÃÆ´Ù¸é Post¹æ½ÄÀ¸·Î º¸³¾ µ¥ÀÌÅ͸¦ ¼ÂÆÃÇÏ¿© URLConnectionÀ¸·ÎºÎÅÍ Ãâ·Â½ºÆ®¸²À» »ý¼ºÇÏ¿© Ãâ·Â½ºÆ®¸²À¸·Î µ¥ÀÌÅ͸¦ ÇØ´ç URL·Î Àü¼ÛÇÏ°Ô µË´Ï´Ù. À̶§ ÇѱÛÀº URLEncoding°úÁ¤À» °ÅÃÄ¾ß ÇÕ´Ï´Ù. ¸¸¾à EncodingÀ» ÇÏÁö ¾Ê´Â´Ù¸é ´Ù¸¥ °á°ú¸¦ ¾ò°Ô µÉ ¼ö µµ ÀÖ½À´Ï´Ù.
n OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
n wr.write("p=" + URLEncoder.encode("»ç¶û"));
ÀÌÁ¦ ±× °á°ú¸¦ ¹Þ¾Æ¾ß °ÚÁÒ. URLConnectionÀ¸·ÎºÎÅÍ ÀÔ·Â ½ºÆ®¸²À» »ý¼ºÇϰí ÀÛ¾÷ÇÏ±â ÆíÇÑ ½ºÆ®¸²À¸·Î º¯È¯ÇÏ¿© µ¥ÀÌÅ͸¦ ÀÐ¾î ³»¸é ÄܼÖȸ鿡 ¿©·¯ºÐÀÌ ¿øÇÏ´Â °á°ú°¡ Ãâ·ÂµÉ °ÍÀÔ´Ï´Ù.]
n BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
n while ((line = rd.readLine()) != null) {
n System.out.println(line);
n }
¢Ñ URLEncoder Ŭ·¡½º¿Í URLDecoder Ŭ·¡½º |
URLEncoderŬ·¡½º : ÀϹݹ®ÀÚ¿À» À¥¿¡¼ Åë¿ëµÇ´Â ¡®x-www-form-urlencoded¡¯ Çü½ÄÀÇ MIMEÇü½ÄÀ¸·Î º¯È¯ÇÏ´Â ±â´É ´ã´ç URLDecoderŬ·¡½º : ¡®x-www-form-urlencoded¡¯ Çü½ÄÀÇ MIMEÇü½ÄÀ» ÀÏ¹Ý ¹®ÀÚ¿·Î º¯È¯ÇÏ´Â ±â´É ´ã´ç |
jabookÀúÀÚ¸íÇÔ |
Á¦¸ñ:¼Ò¼³°°ÀºÀÚ¹Ù4ºÎ ÀúÀÚ:ÃÖ¿µ°ü |