JavaScript È°¿ëÆÁ
2019.05.29 / 24:27

[ÆĽÌ] 1. ±âÃÊÀûÀÎ À¥ µ¥ÀÌÅÍ ¹Þ¾Æ¿À±â

Źµ¹ÀÌ°³¹ßÀÚ
Ãßõ ¼ö 304

¿ì¼± º»°ÝÀûÀ¸·Î JSONÆĽ̿¡ µé¾î°¡±â¿¡ ¾Õ¼­ À¥°ú ¿¬µ¿ÇÏ¿© µ¥ÀÌÅ͸¦ ¹Þ¾Æ¿À´Â ¹æ¹ý¿¡ ´ëÇØ ¾Ë¾Æº¸ÀÚ

»ç½Ç ÀÌ ¹æ¹ýÀº JSON¾øÀÌ ±×³É HTMLÀ̳ª XMLÁ¤º¸¸¦ ±×´ë·Î ¹Þ¾Æ¿Â°Í¿¡ ºÒ°úÇÏÁö¸¸ Áß¿äÇÑ°ÍÀº ÀÎÅͳݰú ¿¬°áÇÏ¿© µ¥ÀÌÅ͸¦ ¹Þ¾Æ¿À´Â ¹æ½ÄÀ» ÀÍÈù´Ù´Â Á¡¿¡ ÀÖ´Ù.

¸ñÇ¥°¡ µÇ´Â »çÀÌÆ®´Â º»ÀÎÀÇ IP¸¦ º¸¿©ÁÖ´Â »çÀÌÆ®ÀΠhttp://ipip.kr/ ·Î ÇÏ°Ú´Ù.

ÀÌ »çÀÌÆ®´Â µé¾î°¡º¸¸é ¾Ë°ÚÁö¸¸ Á¤¸» ½ÉÇÃÇÏ°Ô ¾ÆÀÌÇǸ¸ º¸¿©ÁÖ´Â ¿ªÇÒ¿¡ Ãæ½ÇÇÏ¿© ÆĽÌÇϱⰡ ½±´Ù.

¿ì¸®ÀÇ ¸ñÇ¥´Â Àú »çÀÌÆ®¸¦ µé¾î°¡¸é º¸ÀÌ´Â ¾ÆÀÌÇÇ ÁÖ¼Ò 4ÀÚ¸®¸¸ Á¤È®ÇÏ°Ô ¹Þ¾Æ¿Í¼­ Ãâ·Â½ÃÅ°´Â °ÍÀÌ´Ù.

±×·³ ÀÌÁ¦ ¾î¶²°ÍµéÀÌ ÇÊ¿äÇÑÁö ¼ø¼­´ë·Î »ý°¢Çغ¸ÀÚ
  (1) ÀÎÅͳݰú ¿¬°áÇØ¾ß ÇÏ´Ï ´ç¿¬È÷ À¥ÆäÀÌÁö¿ÍÀÇ ¿¬°á ¼ö´ÜÀÌ ÇÊ¿äÇÏ´Ù.
  (2) ¿¬°á ÀÌÈÄ ¿øÇϴ °á°ú¸¦ ¹Þ¾Æ¿À±â À§ÇÑ ÀÔÃâ·Â¼ö´ÜÀÌ ÇÊ¿äÇÏ´Ù.

»ó±â 2°¡Áö¸¦ »ç¿ëÇϱâ À§Çؼ­ import¸¦ ÇØÁØ´Ù.

import java.net.HttpURLConnection; import java.net.URL; import java.io.BufferedReader; import java.io.InputStreamReader;

À̸§¿¡¼­ ¾Ë ¼ö ÀÖ´Ù½ÃÇÇ urlÀ» °¡Áö°í ¿¬°áÇÑ´ÙÀ½ BufferedReader¿Í InputStreamReader¸¦ ÀÌ¿ëÇØ °á°ú¸¦ ¹Þ¾Æ¿Â µÚ ÄÜ¼Ö È­¸é¿¡ Ãâ·Â½ÃÄÑ ÁÙ °ÍÀÌ´Ù.

¿ì¼± ÀÎÅÍ³Ý ¿¬°á¿¡ ÇÊ¿äÇÑ ±âº» º¯¼öµéÀ» ¼±¾ðÇØÁØ´Ù

private static String Address; private static URL url; private static BufferedReader br; private static HttpURLConnection conn; private static String protocol = "GET";

Áö±Ý ´Ü°è¿¡¼± Áö¿ªº¯¼ö·Î ÇÏ´ø, Àü¿ªº¯¼ö·Î ÇÏ´ø Å©°Ô »ó°üÀº ¾øÀ¸³ª, Æò¼Ò ÇÏ´ø´ë·Î Àü¿ª staticº¯¼ö·Î Àü¾ðÇÏ¿´´Ù.

Çϳª¾¿ »ìÆ캸¸é Address´Â ¸»±×´ë·Î Á¢¼ÓÇÒ »çÀÌÆ®ÀÇ ÁÖ¼Ò¸¦ ÀúÀåÇÒ String°ªÀÌ´Ù.

URLÀº ÁÖ¼Ò¿Í °°ÀÌ ¿¬°áÇØÁÙ¶§ »ç¿ëÇÒ °ÍÀÌ´Ù.

¹öÆÛ¸®´õ´Â °á°ú°ªÀ» ¹Þ¾Æ¿Í¼­ Ãâ·ÂÇØÁÙ¶§ »ç¿ëÇÒ °ÍÀÌ´Ù.

HttpURLConnectionÀº URLÀ» °¡Áö°í ½ÇÁ¦·Î ¿¬°áÀ» ¼öÇàÇÏ´Â ÁßÃßÀûÀÎ ¿ªÇÒÀ» ÇÑ´Ù.

protocolÀº À¥¿¡¼­ ¸í·É¼öÇàÀ» ÇÒ¶§ ¿äû°ú ÀÀ´ä ¹æ½ÄÀ» ÀúÀåÇØÁØ´Ù.

¿©±â¿£ GET¹æ½Ä°ú POST¹æ½ÄÀÌ Àִµ¥ GET¹æ½ÄÀº ¿ì¸®°¡ ÈçÈ÷ º¸´Â https://search.naver.com/search.naver?where=nexearch&query=%EB%84%A4%EC%9D%B4%EB%B2%84&sm=top_hty&fbm=0&ie=utf8 ÀÌ·± ½ÄÀÇ °Ë»ö ³»¿ëµéÀÌ ÁÖ¼Ò¿¡ ´Ù µé¾î³ª´Â ¹æ½ÄÀÎ ¹Ý¸é, POST¹æ½ÄÀº www.aaaa.com/test.do ÀÌ·±½ÄÀ¸·Î ÁÖ¼Ò¿¡ Á¤º¸°¡ µé¾î³ªÁö ¾Ê´Â ¹æ½ÄÀÌ´Ù.(¿ø·¡ ±»ÀÌ º¯¼ö¼±¾ðÀº ¾ÈÇصµ µÇÁö¸¸ °¡µ¶¼ºÀ» À§ÇØ º¯¼ö·Î ¼±¾ðÇß´Ù.)

¾Æ¹«Æ° ¿©±â±îÁö Çؼ­ ±âº»ÀûÀÎ º¯¼ö ¼±¾ðÀº ³¡³µ´Ù. ÀÌÁ¦ main¸Þ¼Òµå¿¡¼­ º¯¼ö¿¡ °ªµéÀ» ÁöÁ¤ÇØ ÁÖ¸é µÈ´Ù.

public static void main(String[] args) throws Exception{ Address = "http://ipip.kr"; url = new URL(Address); conn = (HttpURLConnection)url.openConnection(); conn.setRequestMethod(protocol); br = new BufferedReader(new InputStreamReader(conn.getInputStream(),"MS949")); }

  (1) Address¿¡ ¿ì¸®°¡ Á¢¼ÓÇÒ ÁÖ¼Ò¸¦ ÀÔ·ÂÇØ ÁÖ¾ú´Ù. »ç½Ç Àü¿ªº¯¼ö·Î ¼±¾ðÇÑ ÀÌÀ¯°¡ ¿©±â¿¡µµ ÀÖ´Ù. ÀÌ ÁÖ¼Ò°ªÀ» Scanner¸¦ ÀÌ¿ëÇؼ­ Á÷Á¢ ÀÔ·Â¹Þ¾Æ ¹èÁ¤ÇÏ´Â µîÀÇ ¹æ½ÄÀ¸·Î ÀÀ¿ëÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù.

  (2) url°´Ã¼¸¦ ¼±¾ðÇÏ°í, ¸Å°³º¯¼ö·Î ÁÖ¼Ò°ªÀ» ³Ö¾î¼­ urlÀ» ¿Ï¼º½ÃÄÑÁØ´Ù.

  (3) connº¯¼ö¿¡ url.openConnection()À» ÅëÇØ Åë½ÅÀ» ¿­¾îÁØ °ÍÀ» (HttpURLConnection)À» ÅëÇØ Çüº¯È¯ ÇÏ¿© ÀúÀåÇØ ÁØ´Ù. Áï, ÀÌ °úÁ¤ÀÌ urlÀ» ÅëÇØ ÀÎÅͳݰúÀÇ ¿¬°áÀ» À̾îÁØ °ÍÀÌ´Ù.

  (4) conn.setRequestMethod()ÀÇ ÀÎÀÚ ³»ºÎ¿¡ ¿äû&ÀÀ´ä ¹æ½ÄÀ» ³Ö¾îÁØ´Ù. ¾Æ±îµµ ¼³¸íÇß´Ù½ÃÇÇ GET°ú POST¹æ½ÄÀÌ ÀÖÀ¸¸ç, ¿ì¸®´Â protocol = "GET"À¸·Î ¼±¾ðÇßÀ¸¹Ç·Î get¹æ½ÄÀ¸·Î ÇØ ÁÖ¾ú´Ù.(»ç½Ç get¹æ½ÄÀÌ ´ëºÎºÐÀ̱ä ÇÏÁö¸¸ post¹æ½ÄÀÏ ¶§µµ ÀÖÀ¸´Ï ½ÇÁ¦·Î ¼³°èÇÒ¶© ¾çÂÊ ´Ù ¼³°è ÈÄ ÇÊ¿äÇÑ °ÍÀ» ¸ÂÃç »ç¿ëÇØ Áִ°ÍÀÌ ¿Ç´Ù.

  (5) conn.getInputStream()À» ÅëÇØ ¿¬°áµÈ ÁÖ¼Ò¿¡¼­ ¹Þ¾Æ¿Â Á¤º¸µéÀ» new InputStreamReader()ÀÇ ÀÎDz½ºÆ®¸²¿¡ ³Ö¾îÁÖ°í, À̸¦ new BufferedReader()¸¦ ÅëÇØ br°´Ã¼¿¡ ÀúÀåÇØÁØ´Ù. ÀÎDz½ºÆ®¸²ÀÇ µÎ¹ø° ÀÎÀÚÀÎ "MS949"´Â ±ÛÀÚ ÀÎÄÚµù Çü½ÄÀ¸·Î ¿¾³¯ºÎÅÍ ÇѱÛÀ» Ç¥ÇöÇϴµ¥ »ç¿ëÇÏ´Â ¹æ½ÄÀÌ´Ù. ¸¸ÀÏ ±ÛÀÚ°¡ Á¦´ë·Î Ãâ·ÂÀÌ ¾ÈµÈ´Ù¸é "UTF-8"µî ´Ù¸¥ ÀÎÄÚµù Çü½ÄÀ¸·Î ¹Ù²ãº¸¸é µÈ´Ù. ÀÌ ÀÎÄÚµù ŸÀÔÀº »ý·«ÇÒ ¼ö ÀÖÀ¸¸ç, »ý·« ½Ã ÀÌŬ¸³½º¿¡¼­ ÇØ´ç ÇÁ·ÎÁ§Æ®ÀÇ ±âº» ¼³Á¤°ªÀ» µû¸¥´Ù.

ÀÌÁ¦ ÀÌ·¸°Ô ³ª¿Â ³»¿ëµéÀ» ¸ÕÀú ÇÑÁÙ¾¿ ³¡³¯¶§ ±îÁö Âß Ãâ·ÂÇÏ´Â ½ÄÀ» Â¥º¸ÀÚ

String line; while((line = br.readLine()) != null){ System.out.println(line); }

br.readLine()À» ÅëÇØ ÇÑÁÙ¾¿ Àоî¿Â °á°ú¸¦ lineÀ̶ó´Â ½ºÆ®¸µ °ª¿¡ ÀúÀåÇÏ°í, ÀÌ line°ªÀÌ ³Î°ªÀÌ µÉ¶§, Áï, Àоî¿Ã ³»¿ëÀÌ ´õÀÌ»ó ¾øÀ» ¶§ ±îÁö Ãâ·ÂÇØÁØ´Ù.

À̸¦ ½ÇÇà½ÃÅ°¸é ¾Æ·¡¿Í °°Àº ³»¿ëÀÌ ³ª¿Â´Ù.

CSSµîÀ» ÀüºÎ Æ÷ÇÔÇؼ­ Ãâ·ÂÇϱ⠶§¹®¿¡ »ý°¢º¸´Ù ¾öû ±æ´Ù

  ÀÌ ¹®Àå ÀüºÎ´Ù Ãâ·ÂÇÏ¸é ¾öû³­ ±æÀÌ°¡ µÇ´Âµ¥ ¿ì¸®°¡ ¾Ë°í½ÍÀº°Ç ȨÆäÀÌÁö html¼Ò½º Àü¹®ÀÌ ¾Æ´Ñ »¡°£ ÁÙ·Î ÃijõÀº ¾ÆÀÌÇÇ 4ÀÚ¸® ÀÌ´Ù.


µû¶ó¼­ <tilte>Your IP·Î ¹®ÀåÀÌ ½ÃÀÛÇÒ ¶§, ¾ÆÀÌÇÇ 4ÀÚ¸®ÀÇ ¾Õ, µÚ ¹®ÀåµéÀ» ¸ðµÎ Á¦°ÅÇÏ°í Ãâ·ÂÇØÁÖ¸é µÈ´Ù.

String line; while((line = br.readLine()) != null){ if(line.startsWith("<title>Your IP is ")){ String ip = line.replace("<title>Your IP is ", "").replace("</title>", ""); System.out.println(ip); } }

lineÀÌ <title>Your... À¸·Î ½ÃÀÛÇϸé line¿¡¼­ <title>Your IP is ¹®Àå°ú, </title>¹®ÀåÀ» ¸ðµÎ ¾ø¾Ö("")ÁÖ°í À̸¦ ip¶ó´Â ½ºÆ®¸µ¿¡ ´ãÀº µÚ Ãâ·ÂÇØÁÖ´Â ±¸Á¶ÀÌ´Ù.

ÀÌÁ¦ Äڵ带 Á¾ÇÕ½ÃÅ°¸é ¾Æ·¡¿Í °°´Ù.

ÄÚµå ±¸¼º : 

import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class Main { private static String Address; private static URL url; private static BufferedReader br; private static HttpURLConnection conn; private static String protocol = "GET"; public static void main(String[] args) throws Exception{ Address = "http://ipip.kr"; url = new URL(Address); conn = (HttpURLConnection)url.openConnection(); conn.setRequestMethod(protocol); br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "MS949")); String line; while((line = br.readLine()) != null){ if(line.startsWith("<title>Your IP is ")){ String ip; ip = line.replace("<title>Your IP is ", "").replace("</title>", ""); System.out.println(ip); } } br.close(); } }

Ãâ·Â °á°ú : 

¿©±â±îÁö Çؼ­ ±âÃÊÀûÀÎ ÀÎÅÍ³Ý ¿¬°áÀ» ÅëÇÑ ÆĽ̿¡ ´ëÇØ ¾Ë¾Æº¸¾Ò´Ù. »ç½Ç Áö±Ý ¼Ò°³ÇÑ ÀÌ ¹æ¹ýÀº XMLÆĽ̵µ ¾Æ´Ï°í JSONÆĽ̵µ ¾Æ´Ñ ¸»±×´ë·Î HTMLÀ» ±×´ë·Î °¡Á®¿Í¼­ ÇÊ¿äÇÑ ºÎºÐ¸¸ À߶󳻼­ Ãâ·ÂÇÑ °Í¿¡ ºÒ°úÇÏ´Ù.
ÇÏÁö¸¸ À̹ø ÀåÀº ¾Æ¹«·± ¶óÀ̺귯¸® ÆÄÀÏ ¾øÀÌ ÆĽÌÀ» ÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» ¾Ë¾Æº¸¾Ò´Ù´Â °Í°ú, ½ÇÁ¦·Î ÀÎÅͳݿ¡ ¿¬°áÇÏ¿© µ¥ÀÌÅ͸¦ ¹Þ¾Æ¿À´Â °úÁ¤À» Á÷Á¢ Çغ¸¾Ò´Ù´Â Á¡¿¡¼­ Àǹ̸¦ °¡Áú¸¸ ÇÏ´Ù.

´ÙÀ½Àå¿¡¼­ºÎÅÏ º»°ÝÀûÀ¸·Î JSONÀ» ÀÌ¿ëÇÑ ÆĽ̰ú, APIÅ° ¹ß±Þ¿¡ ´ëÇؼ­ ¾Ë¾Æº¸µµ·Ï ÇÏ°Ú´Ù.