REST 스타일 웹 서비스 요청Flash Player 9 이상, Adobe AIR 1.0 이상 REST 스타일 웹 서비스는 HTTP 메서드 동사를 사용하여 기본 액션을 지정하고 URL 변수를 통해 액션의 세부 사항을 지정할 수 있습니다. 예를 들어 항목에 대한 데이터를 가져오는 요청은 GET 동사와 URL 변수를 사용하여 메서드 이름과 항목 ID를 지정할 수 있습니다. 결과 URL 문자열은 다음 예처럼 나타날 수 있습니다. http://service.example.com/?method=getItem&id=d3452 ActionScript로 REST 스타일 웹 서비스에 액세스하려면 URLRequest, URLVariables 및 URLLoader 클래스를 사용할 수 있습니다. AIR 응용 프로그램 내의 JavaScript 코드에서 XMLHttpRequest를 사용할 수도 있습니다. ActionScript에서 REST 스타일 웹 서비스 호출을 프로그래밍하는 단계는 일반적으로 다음과 같습니다.
예를 들어 웹 서비스가 호출 매개 변수를 요청자에게 되돌려주는 테스트 메서드를 제공하는 경우 다음가 같은 ActionScript 코드를 사용하여 서비스를 호출할 수 있습니다. import flash.events.Event; import flash.events.ErrorEvent; import flash.events.IOErrorEvent; import flash.events.SecurityErrorEvent; import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.URLRequestMethod; import flash.net.URLVariables; private var requestor:URLLoader = new URLLoader(); public function restServiceCall():void { //Create the HTTP request object var request:URLRequest = new URLRequest( "http://service.example.com/" ); request.method = URLRequestMethod.GET; //Add the URL variables var variables:URLVariables = new URLVariables(); variables.method = "test.echo"; variables.api_key = "123456ABC"; variables.message = "Able was I, ere I saw Elba."; request.data = variables; //Initiate the transaction requestor = new URLLoader(); requestor.addEventListener( Event.COMPLETE, httpRequestComplete ); requestor.addEventListener( IOErrorEvent.IOERROR, httpRequestError ); requestor.addEventListener( SecurityErrorEvent.SECURITY_ERROR, httpRequestError ); requestor.load( request ); } private function httpRequestComplete( event:Event ):void { trace( event.target.data ); } private function httpRequestError( error:ErrorEvent ):void{ trace( "An error occured: " + error.message ); } AIR 응용 프로그램 내의 JavaScript에서는 XMLHttpRequest 객체를 사용하여 동일한 요청을 수행할 수 있습니다. <html> <head><title>RESTful web service request</title> <script type="text/javascript"> function makeRequest() { var requestDisplay = document.getElementById( "request" ); var resultDisplay = document.getElementById( "result" ); //Create a conveninece object to hold the call properties var request = {}; request.URL = "http://service.example.com/"; request.method = "test.echo"; request.HTTPmethod = "GET"; request.parameters = {}; request.parameters.api_key = "ABCDEF123"; request.parameters.message = "Able was I ere I saw Elba."; var requestURL = makeURL( request ); xmlhttp = new XMLHttpRequest(); xmlhttp.open( request.HTTPmethod, requestURL, true); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4) { resultDisplay.innerHTML = xmlhttp.responseText; } } xmlhttp.send(null); requestDisplay.innerHTML = requestURL; } //Convert the request object into a properly formatted URL function makeURL( request ) { var url = request.URL + "?method=" + escape( request.method ); for( var property in request.parameters ) { url += "&" + property + "=" + escape( request.parameters[property] ); } return url; } </script> </head> <body onload="makeRequest()"> <h1>Request:</h1> <div id="request"></div> <h1>Result:</h1> <div id="result"></div> </body> </html> |
|