vidkid
|
2004-04-21 17:05:52, Á¶È¸ : 6,628, Ãßõ : 534 |
- Download #1 : http.zip (3.1 KB), Download : 122

[À¥¼¹ö¿ÍÀÇ ¸¸³² #2] GET / POST ¸Þ¼Òµå
¾È³çÇϼ¼¿ä. vidkid ÀÔ´Ï´Ù.
À̹ø °Á´ GET / POST ¸Þ¼Òµå¸¦ »ç¿ëÇϱâ À§ÇÑ ÇÁ·Î½ÃÁ®¿¡ ´ëÇÑ ¼³¸í°ú °£´ÜÇÑ ¿¹Á¦ÀÔ´Ï´Ù.
(* ÇÁ·ÎÁ§Æ® ÆÄÀÏÀº ÷ºÎ ÆÄÀÏÀ» ÀÌ¿ëÇØ ÁÖ¼¼¿ä.)
´ëºÎºÐÀÇ ¹æ¹ýÀº À¥¼¹ö¿Í Åë½ÅÀ» À§Çؼ GET / POST ¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.
¸ðµÎµé ¾Æ½Ã°ÚÁö¸¸ °£´ÜÈ÷ ¼³¸íµå¸®ÀÚ¸é
GET : http://localhost/test.php?mode=list&no=10
À§¿Í °°Àº ¹æ¹ýÀ¸·Î url ¿¡ ? ¸¦ ½á¼ °ªµéÀ» ³Ñ±â´Â ¹æ½ÄÀ̶ó ÇϰڽÀ´Ï´Ù.
POST : <form action="http://localhost" method=post> <form>
POST ´Â À§¿Í °°Àº ¹æ¹ýÀ¸·Î url ¿¡ µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ´Â Çü½ÄÀÌ ¾Æ´Ñ HTTP ÇÁ·ÎÅäÄÝ ±Ô¾à¿¡
µû¶ó µ¥ÀÌÅ͸¦ ³Ñ°ÜÁÝ´Ï´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº HTTP 1.0, 1.1 À» ÂüÁ¶Çϼ¼¿ä.
±×¸®°í ¿äÁòÀº SOAP ¹æ½Äµµ ¸¹ÀÌ »ç¿ëÇÕ´Ï´Ù.
¼¼°¡Áö ¹æ½ÄÀÇ Àå´ÜÁ¡Àº ±»ÀÌ ¼³¸íÇÏÁö ¾Ê°Ú½À´Ï´Ù.
Äÿ¡¼µµ ¼¹öÀÇ ½ºÅ©¸³Æ®(PHP, ASP, JSP, ...)¸¦ È£ÃâÇÏ°í µ¥ÀÌÅ͸¦ ¹Þ±âÀ§ÇØ À§ÀÇ 3°¡Áö ¹æ½ÄÀ»
¸ðµÎ »ç¿ëÇÕ´Ï´Ù. (À̹ø °Á´ 2°¡Áö¸¸ ¼³¸í)
±×·³ ¾î¶»°Ô »ç¿ëÇÏ´ÂÁö Â÷±ÙÂ÷±Ù ¾Ë¾Æº¸ÁÒ.
(start1.curl)
-----------------------------------------------------------------------
{curl 3.0 applet}
{curl-file-attributes character-encoding = "euc-kr"}
{applet manifest = "manifest.mcurl"}
{value
{CommandButton label="´·¯ÁÖ¼¼¿ä",
{on Action do
{{get-the-applet}.browse-url
{url "http://localhost/study/http/start1.php?mode=list&no=7"},
target="_blank"
}
}
}
}
-----------------------------------------------------------------------
¿ì¼± start1.curl ÆÄÀÏÀ» º¸ÁÒ
¾ÆÁÖ °£´ÜÇÑ ¼Ò½ºÀÔ´Ï´Ù.
ȸ鿡 CommandButton Çϳª »ý¼ºÀ» ÇØ¼ ¹öưÀÌ ´¸®¸é
À¥ºê¶ó¿ìÀúÀÇ url À» ¹Ù²ãÁÖ´Â ³»¿ëÀÔ´Ï´Ù.
target À» _blank ·Î Á༠»õâÀÌ ¶ß°Ô Çß½À´Ï´Ù.
¿©±â¼
{url "http://localhost/study/http/start1.php?mode=list&no=7"}
À» º¸¸é GET ¹æ½ÄÀ¸·Î start1.php ¸¦ È£ÃâÇß½À´Ï´Ù.
mode=list
no = 7
µÎ°³ÀÇ °ªÀÌ ¼¹öÀÇ php ÆÄÀÏ·Î ³Ñ°ÜÁý´Ï´Ù.
GET ¹æ½ÄÀº ÀϹÝÀûÀ¸·Î Html ¿¡¼ <A> ű׷Π³Ñ°ÜÁÖ´Â ¹æ½Ä ±×·¡µµ »ç¿ëÇÕ´Ï´Ù.
±×·³ start1.php ÆÄÀÏÀ» º¸ÁÒ.
(start1.php)
-----------------------------------------------------------------------
<?
echo "mode = $mode<br>";
echo "no = $no";
?>
-----------------------------------------------------------------------
¹¹ Ưº°È÷ ÇÏ´Â ÀÏÀº ¾ø±â¶§¹®¿¡ ¹ÞÀº º¯¼öÀÇ °ªÀ» ±×³É Ãâ·ÂÇÏ´Â ³»¿ëÀÔ´Ï´Ù.
php ¸¦ Çѹøµµ »ç¿ë¾ÈÇØºÃ¾îµµ ÀÌÁ¤µµ´Â ÀÌÇØÇÒ ¼ö ÀÖ°ÚÁÒ?
±»ÀÌ ¼³¸íÀº ¾Èµå¸®°Ú½À´Ï´Ù.
½ÇÇà¹æ¹ýÀº
http://localhost/study/http/start1.curl
·Î À¥ºê¶ó¿ìÀú¿¡¼ ½ÇÇàÇϼ¼¿ä. ¹°·Ð ·ÎÄÿ¡¼ ½ÇÇàÇØµµ »ó°üÀº ¾ø½À´Ï´Ù.
C:\APM_Setup\htdocs\study\http\start.curl
(** ´ç¿¬È÷ µð·ºÅ丮´Â ¸ÂÃçÁÖ¼Å¾ß °ÚÁÒ?)
±×·³ °á°ú´Â..

À§ÀÇ È¸é´ë·Î ¿¹»óÇÑ °á°ú°¡ ³ª¿É´Ï´Ù.
À̹ø¿¡´Â url ÀÌ º¯°æµÇ¼ ÆäÀÌÁö°¡ ¹Ù²î´Â ÇüŰ¡ ¾Æ´Ñ ÆäÀÌÁö´Â ±×´ë·Î ÀÖ°í
³»ºÎÀûÀ¸·Î ¼¹ö¸¦ È£ÃâÇØ¼ °á°ú¸¦ ¹Þ´Â ¹æ½ÄÀ¸·Î º¯°æÇØ º¸°Ú½À´Ï´Ù.
(start2.curl)
-----------------------------------------------------------------------
{curl 3.0 applet}
{curl-file-attributes character-encoding = "euc-kr"}
{applet manifest = "manifest.mcurl"}
{value
{CommandButton label="´·¯ÁÖ¼¼¿ä",
{on Action do
let string-buf : StringBuf = {new StringBuf}
let num-read : int = 0
let error? : bool = false
let result : String = ""
{try
{with-file-caching-style FileCachingStyle.reload do
set (string-buf, num-read) =
{read-from
character-encoding = {get-character-encoding-by-name "euc-kr"},
{url "http://localhost/study/http/start2.php?mode=list&no=7"}
}
}
catch th:Throwable do
set error? = true
}
set result = {string-buf.to-String}
{popup-message result}
}
}
}
-----------------------------------------------------------------------
À̹ø ³»¿ëÀº Á¶±Ý ´õ ±æ¾îÁ³½À´Ï´Ù.
°¡Àå Å« º¯È´Â start2.php ¸¦ È£ÃâÇϱâÇÏ´Â ¹æ¹ýÀÌ ÆäÀÌÁöÀüȯ(ºê¶ó¿ìÀúÀÇ url º¯°æ) ¿¡¼
ÆäÀÌÁö Àüȯ¾øÀÌ °°Àº ÆäÀÌÁö ³»¿¡¼ ó¸®ÇÏ´Â °ÍÀÔ´Ï´Ù.
±×·³ ¼Ò½º¸¦ »ìÆìº¸ÁÒ.
{with-file-caching-style FileCachingStyle.reload do
...
}
¿ì¼± start2.php ¸¦ È£ÃâÇϱâ Àü¿¡ {with-file-caching-style ... do } ¸¦ »ç¿ëÇß½À´Ï´Ù.
ÀÌ macro °¡ ÇÏ´Â ÀÏÀº read-from °ú °°Àº ÇÁ·Î½ÃÁ®¿¡¼ ¼¹öÀÇ µ¥ÀÌÅ͸¦ Àоî¿Ã¶§
ij½¬¸¦ Àû¿ëÇÒ °ÍÀÎÁö ¿©ºÎ¸¦ °áÁ¤ÇÕ´Ï´Ù.
À§ÀÇ °æ¿ì´Â ¹«Á¶°Ç ´Ù½Ã Àоî¿À´Â °ÍÀÔ´Ï´Ù.
¸¸¾à À§ ºÎºÐÀÌ ¸í½Ã°¡ ¾ÈµÇ¸é À¥ºê¶ó¿ìÀúÀÇ Ä³½¬°ü·Ã ¿É¼Ç¿¡ µû¶ó Çѹø °¡Á®¿Â µ¥ÀÌÅÍ´Â
start2.curl ÀÌ reload µÇ±â Àü¿¡´Â ij½¬¿¡¼ Àоî¿É´Ï´Ù.
set (string-buf, num-read) =
{read-from
character-encoding = {get-character-encoding-by-name "euc-kr"},
{url "http://localhost/study/http/start2.php?mode=list&no=7"}
}
read-from À̶ó´Â ÇÁ·Î½ÃÁ®´Â ÁÖ¾îÁø url ¿¡¼ ÆÄÀÏÀ» Àоî¿É´Ï´Ù.
±×°ÍÀÌ ·ÎÄà ÆÄÀÏÀÌ¸é ÆÄÀÏ·Î Àаí À¥»óÀÇ ¹®¼(html ¶Ç´Â µ¿ÀûÀ¸·Î »ý¼ºµÈ html)¶ó¸é
±× ¹®¼¸¦ ÀнÀ´Ï´Ù. Áï, php °°Àº ½ºÅ©¸³Æ®·Î »ý¼ºµÈ html µµ ÆÄÀÏ·Î »ý°¢Çϰí Àоî¿É´Ï´Ù.
read-from Àº 2°³ÀÇ °ªÀ» ¸®ÅÏÇÕ´Ï´Ù. StringBuf Ŭ·¡½º¿Í ÀÐÀº °¹¼ö¸¦ ¸®ÅÏÇÕ´Ï´Ù.
¸¶Áö¸·À¸·Î
set result = {string-buf.to-String}
{popup-message result}
¹Þ¾Æ¿Â string-buf ¸¦ String À¸·Î º¯È¯ÇÑµÚ È¸é¿¡ popup âÀ¸·Î ¶ç¿ó´Ï´Ù.
À̹ø¿£ start2.php ¸¦ È®ÀÎÇØ º¸ÁÒ.
(start2.php)
-----------------------------------------------------------------------
<?
echo "mode °ªÀº $mode ÀÔ´Ï´Ù.\n";
echo "no °ªÀº $no ÀÔ´Ï´Ù.";
?>
-----------------------------------------------------------------------
¿ª½Ã °£´ÜÇÕ´Ï´Ù.
start1.php ¿Í °ÅÀÇ °°½À´Ï´Ù. »ç½Ç ±×´ë·Î ¾µ·Á´Ù°¡ ¼ºÀǰ¡ ºÎÁ·ÇѰа°¾Æ¼ ¾à°£¸¸
¹Ù²å½À´Ï´Ù. ^^; (´õ ¼ºÀǰ¡ ¾ø³ª?)
ÇÏ¿©°£ ºê¶ó¿ìÀú¿¡ ½ÇÇàÇÑ´Ù¸é
À§ÀÇ ¹®ÀÚ¿µéÀÌ ³ªÅ¸³ª°ÚÁÒ..
ÀÌÁ¦ ½ÇÇàÀ» ÇØº¼±î¿ä?
http://localhost/study/http/start2.curl

°á°ú´Â ¹Ù·Î ¿¹»óÇß´ø°Å ó·³ ³ªÅ¸³µ½À´Ï´Ù.
µÎÁÙ·Î ³ª¿ÃÁÙ ¾Ë¾Ò´Âµ¥ 1ÁÙ·Î ³ª¿Â´Ù±¸¿ä?
±×°Ç popup-message ¿¡¼ 1ÁÙ·Î »Ñ·Á ÁÖ´Â °ÍÀÔ´Ï´Ù. curl Àº text Ãâ·ÂÇÒ¶§ \n ´Â ¹«½ÃµÈ´Ù°í
¸»¾¸µå·ÈÁÒ?.. À̰ÍÀÇ ÇØ°áÀº ³ªÁß¿¡ Çϱâ·Î Çϱ¸¿ä..
¾î·°Å³ª start2.php ¿¡¼ echo ¸¦ »ç¿ëÇØ¼ Ãâ·ÂÇÑ °á°ú°¡ ±×´ë·Î ³ª¿Ô½À´Ï´Ù.
¸¸Á· ½º·´±º¿ä..
ÀÌÁ¨ POST ·Î ³Ñ¾î°¡ º¸°Ú½À´Ï´Ù.
¿ì¼± ¼Ò½º¸¦
(start3.curl)
-----------------------------------------------------------------------
{curl 3.0 applet}
{curl-file-attributes character-encoding = "euc-kr"}
{applet manifest = "manifest.mcurl"}
{value
{CommandButton label="´·¯ÁÖ¼¼¿ä",
{on Action do
let error? : bool = false
let script-loc:Url = {url "http://localhost/study/http/start3.php"}
let http-file:HttpFile = {script-loc.instantiate-File} asa HttpFile
let req : HttpFormData =
{HttpFormData
||mime-type = HttpFormData.urlencoded-mime-type,
default-character-encoding = {get-character-encoding-by-name "euc-kr"}
}
{req.append {HttpFormStringParam "mode", "list"}}
{req.append {HttpFormStringParam "no", "7"}}
let web-stream:#HttpTextInputStream
{with-file-caching-style FileCachingStyle.reload do
set web-stream =
{http-file.http-read-open
character-encoding = {get-character-encoding-by-name "euc-kr"},
request-data = req,
request-method = HttpRequestMethod.post
}
}
let returned : String = ""
let lines:{Array-of StringBuf} = {{Array-of StringBuf}}
let n-lines:int = 0
{try
set (lines, n-lines) = {web-stream.read-lines}
catch th:Throwable do
set error? = true
finally
{web-stream.close}
}
{if not error? then
{for i :int=0 below n-lines do
set returned = returned & "\n" & {lines[i].to-String}
}
}
{popup-message returned}
}
}
}
-----------------------------------------------------------------------
À̹ø¿£ Á» ±ä ¼Ò½ºÀÔ´Ï´Ù.
³»¿ëÀº start2.curl °ú °°Àº ³»¿ëÀ¸·Î ¹öưÀÌ ÇϳªÀÖ°í ±×°É ´©¸£¸é
start3.php ¸¦ È£ÃâÇØ¼ °á°ú¸¦ ¹Þ¾Æ¿À´Â °ÅÁÒ..
´ë½Å È£Ãâ ¹æ½ÄÀÌ POST ÀÔ´Ï´Ù.
±×·³ Çϳª¾¿ »ìÆìº¼±î¿ä..
let http-file:HttpFile = {script-loc.instantiate-File} asa HttpFile
È£ÃâÇÑ url À» HttpFile Ŭ·¡½º·Î ¼±¾ðÇß½À´Ï´Ù.
ÀÌ °´Ã¼°¡ ½ÇÁ¦·Î ¼¹ö¿Í Åë½ÅÀ» ÇÏ°Ô µÇ°ÙÁÒ..
let req : HttpFormData =
{HttpFormData
||mime-type = HttpFormData.urlencoded-mime-type,
default-character-encoding = {get-character-encoding-by-name "euc-kr"}
}
{req.append {HttpFormStringParam "mode", "list"}}
{req.append {HttpFormStringParam "no", "7"}}
ÀÌ ºÎºÐÀº HttpFormData °´Ã¼¸¦ »ý¼ºÇÏ´Â ºÎºÐÀ¸·Î ½ÇÁ¦ POST ·Î ³Ñ°ÜÁú µ¥ÀÌÅ͸¦
Á¤ÀÇÇϱâ À§ÇÑ °´Ã¼ÀÔ´Ï´Ù.
Ŭ·¡½º »ý¼º½Ã ¿É¼ÇµéÀº mime-type, default-character-encoding µîÀ» ÁÙ ¼ö ÀÖ½À´Ï´Ù.
±×¸®°í ¾Æ·¡ ºÎºÐÀº ½ÇÁ¦·Î HttpFormStringParam Ŭ·¡½º¸¦ ÀÌ¿ëÇØ¼ String ÇüÅÂÀÇ µ¥ÀÌÅ͸¦
Ãß°¡ ÇØÁÖ°í ÀÖ½À´Ï´Ù.
À̹ۿ¡µµ µ¥ÀÌÅÍÀÇ Å¸ÀÔ¿¡ µû¶ó
HttpFormFileParam, HttpFormBytesParam µîµµ ÀÖ½À´Ï´Ù.
À§ÀÇ °æ¿ì´Â mode ¿Í no ÀÇ °ªÀ» Àü´ÞÇϱâÀ§ÇØ req ¿¡ Ãß°¡¸¦ Çß½À´Ï´Ù.
---------------------------------------------------------------------
let web-stream:#HttpTextInputStream
{with-file-caching-style FileCachingStyle.reload do
set web-stream =
{http-file.http-read-open
character-encoding = {get-character-encoding-by-name "euc-kr"},
request-data = req,
request-method = HttpRequestMethod.post
}
}
---------------------------------------------------------------------
ÀÌ ºÎºÐÀÌ ½ÇÁ¦·Î ¼¹öÂÊ start3.php ¸¦ È£ÃâÇØ¼ °á°ú¸¦ ¾ò¾î¿À±â À§ÇÑ ºÎºÐÀÔ´Ï´Ù.
HttpTextInputStream Ŭ·¡½º°¡ post È£ÃâÀ» ÇÒ ¼ö Àִ Ŭ·¡½º ÀÔ´Ï´Ù.
»ý¼ºÀº
http-file.http-read-open
¸Þ¼Òµå¸¦ ÀÌ¿ëÇØ¼ »ý¼ºÇß°í.. POST »Ó¸¸ ¾Æ´Ï¶ó ¿É¼ÇÀÇ
request-method = HttpRequestMethod.post
À» HttpRequestMethod.get À¸·Î ¹Ù²ãÁÜÀ¸·Î ÇØ¼ GET ¹æ½Äµµ È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù.
request-data = req À» ÀÌ¿ëÇØ¼ POST µ¥ÀÌÅ͸¦ ³Ñ°ÜÁá½À´Ï´Ù.
---------------------------------------------------------------------
{try
set (lines, n-lines) = {web-stream.read-lines}
catch th:Throwable do
set error? = true
finally
{web-stream.close}
}
---------------------------------------------------------------------
À§ÀÇ ºÎºÐÀÌ ½ÇÁ¦·Î µ¥ÀÌÅ͸¦ Àоî¿À´Â ºÎºÐÀÔ´Ï´Ù.
ÁÖÀÇÇÒ Á¡Àº ¹Ýµå½Ã µ¥ÀÌÅ͸¦ ´Ù Àоú´Ù¸é
{web-stream.close}
¸¦ È£ÃâÇØ¼ HttpTextInputStream ¸¦ ´Ý¾ÆÁÖ¾î¾ß ÇÕ´Ï´Ù.
³ª¸ÓÁö´Â ¼³¸í »ý·«ÇϰڽÀ´Ï´Ù.
À̹ø¿£ start3.php ÆÄÀÏÀ» º¸ÁÒ..
(start3.php)
-----------------------------------------------------------------------
<?
echo "mode °ªÀº $mode ÀÔ´Ï´Ù.\n";
echo "no °ªÀº $no ÀÔ´Ï´Ù.";
?>
-----------------------------------------------------------------------
À½, start2.php ÇÏ°í ¶È°°½À´Ï´Ù. ^^;
Á»´õ º¸¾ÈÀ» »ý°¢Çϰí ÇÑ´Ù¸é ¼öÁ¤ÀÌ ÇÊ¿äÇϰÚÁö¸¸ ¿ì¼±Àº $mode, $no ÇüÅ·ΠÆÄ¶ó¸ÞÅ͸¦ Àоú½À´Ï´Ù.
ÀÌ ºÎºÐÀº ´Ù¸¥ ¾ð¾î·Î »ç¿ë½Ã´Â POST ¹æ½ÄÀ¸·Î ÆÄ¶ó¸ÞÅ͸¦ Àоî¿Í¾ß ÇÕ´Ï´Ù.
½ÇÇà °á°ú´Â..

À§¿Í °°½À´Ï´Ù.
´ç¿¬ÇÑ °á°ú°ÚÁÒ..
Áö±Ý ±îÁö GET°ú POST¸¦ ÀÌ¿ëÇØ¼ ¼¹ö¿Í Åë½ÅÀ» Çß½À´Ï´Ù.
Á¤¸» °£´ÜÇÏÁö¸¸ ´ëºÎºÐ À̰ÍÀÇ ÀÀ¿ëÀ̴ϱñ...
½±°Ô ÇÒ ¼ö ÀÖÀ¸¸®¶ó »ý°¢µË´Ï´Ù.
±×·³ ~~
|
|
|